Linux Vim 光标错位,技术|Vim 复制粘帖格式错乱问题的解决办法
有时候,复制文本(尤其是代码)到 Vim,会出现格式错乱的问题。看样子,应该是自动缩进惹得祸。本文不去深究原因,直接给出解决方法。
1. paste 模式
运行如下命令,进入 paste 模式:
:set paste
进入 paste 模式后,按 i 键进入插入模式,然后再粘帖,文本格式不会错乱了。但粘帖后还需要按 进入普通模式并执行如下命令结束 paste 模式:
:set nopaste
显然,这样非常麻烦。下面我们进行改进。
2. 快捷键一
我们可以利用设置快捷键来简化上面的两个命令。在 ~/.vimrc 中加入如下两行:
map :set paste
map :set nopaste
这样,在普通模式下按 F10 (你也可以用自己喜欢的按键)就会进入 paste 模式,按 i 进入插入模式后粘帖,然后按 回到普通模式,再按 F11 结束 paste 模式。
这样虽然方便了,但占用了两个按键。下面我们继续改进。
3. 快捷键二
在 ~/.vimrc 中加入如下内容:
set pastetoggle=
这样就可以把上面的 F10 和 F11 合并为一个快捷键来切换 paste 模式了。
还有更好的办法么?当然!
4. Vim 寄存器一
关于 Vim 寄存器的详细信息请执行命令 “:help registers” 查看。
对于“剪切板”这个概念,Linux 下有两个东西:一个叫做选择缓冲区(X11 selection buffer),另一个才是剪切板(clipboard)。鼠标或键盘选择内容时,内容实时进入缓冲区,然后按中键将内容插入光标所在位置;鼠标或键盘选择内容后,按Ctrl-C(或Shift-Ctrl-C)或菜单中的“复制”,内容进入剪切板,然后按Ctrl-V(或Shift-Ctrl-V)或菜单中的“粘帖”将内容插入光标所在位置。关于这两者的详细信息,请自行搜索,此处不深究。
Vim 的寄存器 "* 对应系统缓冲区, 寄存器 "+ 对应系统剪切板。
如果你是把选择的内容(在系统缓冲区中)粘帖到 Vim ,只需在普通模式下执行如下命令:
"*p
对应的,如果你是把复制的内容(在系统剪切板中)粘帖到 Vim,只需在普通模式下执行如下命令:
"+p
怎么样?格式没有错乱了吧?
这样虽然简便很多了,但还是需要输入三个字母,并且这三个字母都得使用右手小拇指输入,甚至其中的两个字母还需要 shift 键配合!
还有更简单的办法。
5. Vim 寄存器二
在 ~/.vimrc 里加入如下内容:
set clipboard=unnamed
然后只需在普通模式下按 p 即可把系统缓冲区中的内容粘帖到 Vim 中,就像粘帖用 yy 命令得到的内容一样,并且格式不错乱。
如果把上面的一行换成如下内容:
set clipboard=unnamedplus
普通模式下按 p 粘帖的内容就是系统剪切板里的内容了。
这已经足够简便了。在搜索此问题的过程中,我还看到了另外一些办法。
6. 快捷键三
在 ~/.vimrc 里加入如下内容:
inoremap :setl pastegi+:setl nopastegi
这样,你就可以在插入模式下使用 Shift-Insert 快捷键在粘帖系统剪贴板中的内容了。
把上面一行替换成如下内容同样可以达到相同的效果:
inoremap "+p`]a
注意,这可是在插入模式下哦!比起第 5 节提到的方法,这种方法省去了一次 按键进入普通模式和一次 i 按键重新回到插入模式。
至此,你需要做的只是:
a. 复制你想要的内容;
b. 回到 Vim 并按 Shift-Insert 快捷键;
c. 继续编辑其他内容。
Linux Vim 光标错位,技术|Vim 复制粘帖格式错乱问题的解决办法相关推荐
- Linux: xclip,pbcopy,xsel用法 terminal 复制粘帖 (mac , ubuntu)
1. Windows下 使用系统自带的clip命令. # 位于C:\Windows\system32\clip.exe. 示例: echo Hello | clip # 将字符串Hello放入Wind ...
- linux mysql端口启动失败怎么办,Linux下apache mysql等服务修改默认端口后无法正常启动解决办法...
Linux下apache mysql等服务修改默认端口后无法正常启动解决办法 linux下 apache 等服务修改默认端口后无法正常启动解决办法 服务器上装了两个webserver,一个是nginx ...
- vim复制粘贴导致多行出现#号解决办法
在vim内复制多行假如复制的行带有#号会导致其他不带#号的行自动加# 解决办法,输入一下命令再粘贴即可 :set paste
- linux fortran 内存不足,内存不够不用怕! 虚拟内存不足的十种解决办法
如果你的系统虚拟内存太低,可以鼠标右击"我的电脑"选择"属性→高级→性能下设置→高级→打开虚拟内存设置",可以重新设置最大值和最小值,按物理内存的1.5~2倍来 ...
- wordpress搜索不了中文linux,WordPress上传带中文汉字名称的图片不显示的解决办法...
以上是WordPress上传带中文汉字名称的图片不显示的情况,正常上传成功的话,在上图两个地方都会有图片缩略图显示.相信很多WordPress装载linux系统上的朋友都会遇到这样的错误. WordP ...
- element表格错位问题(表头和表格内容没有对齐)解决办法
element表格错位问题,表头和表格内容没有对齐,如下图: 解决办法: 在入口文件App.vue 样式中加以下内容: body .el-table th.gutter {display: table ...
- linux设置为桥接后ipv4不见,centOS不显示ipv4地址的解决办法
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/lx_Frolf/article/det ...
- Edge浏览器复制地址栏地址变为文字超链接的解决办法
一直在使用微软新出的Edge浏览器,在最近的版本中发现,复制地址栏中的地址到别的地方时,地址会变成一个文字链接,比如我要复制当前博客的地址到微信中发给别人: https://yuweidong.blo ...
- vim/vi中的光标键会变成a,b,c,d的解决办法
在某些情况下, vi/vim中的编辑会出现一些很不愉快的情况, 比如在vi/vim中输入方向键有时被转化为A B C D, 或者按个Enter键, 却被转为为其他字母, 恼人得很, 该怎么办呢? 方法 ...
最新文章
- 时间和邮箱的正则表达式,获取当前时间函数
- 怎样的视频监控的管理与运营才算高效
- title: postGreSQL 插件 timescaleDB 安装使用 date: 2019-02-14 18:02:23
- Java并发编程艺术----读书笔记(二)
- 洛谷p1208 水题贪心 思想入门
- 比较分析 Spring AOP 和 AspectJ 之间的差别
- declare handler 声明异常处理的语法
- 【PHP】IPv4与整数转换、IPv6与整数转换
- 谭浩强课后题之----求最大公约数和最小公倍数
- 开源php面板,宝塔面板nginx安装终于搞定了
- Python函数积累
- leetcode 整数反转
- Android7.1开机启动脚本
- CentOS设置默认启动命令行(不启动图形界面)
- 读书笔记-------修炼之道互联网产品从设计到运营
- 电磁干扰、电磁兼容性和电磁屏蔽区别及联系
- 【C++程序设计技巧】NVI(Non-Virtual Interface )
- 计划预算(PV)、实际完成工作预算(EV)、实际成本(AC)
- appium+Python+逍遥游模拟器自动化执行测试用例,为什么一直中断连接?
- 还在为ElementUI的原生校验方式苦恼吗,快用享受element-ui-verify插件的快乐吧(待续)
热门文章
- (转)详解Vs2008下打包安装程序的一些技巧(含win7下提权限、卸载以及安装时定向到网页)...
- js对象序列化为json字符串
- IF-ERRORLEVEL使用方法
- LeetCode-reverse integer复杂度
- win8.1自带metro应用不工作解决办法
- weblogic双机热备部署linux,WebLogic应用在集群环境下的一些基本知识【转载】
- AUTOSAR从入门到精通100讲(二十二)-AUTOSAR通信篇—CANTP模块
- docker rabbitmq php扩展,Docker开启RabbitMQ延时消息队列
- 《鸿蒙理论知识06》HarmonyOS概述之应用开发基础知识
- 大学4年毕业后我是如何还清的助学贷款。