有时候,复制文本(尤其是代码)到 Vim,会出现格式错乱的问题。看样子,应该是自动缩进惹得祸。本文不去深究原因,直接给出解决方法。
-
paste 模式
关于 Vim 寄存器的详细信息请执行命令 “:help registers” 查看。
对于“剪切板”这个概念,Linux 下有两个东西:一个叫做选择缓冲区(X11 selection buffer),另一个才是剪切板(clipboard)。鼠标或键盘选择内容时,内容实时进入缓冲区,然后按中键将内容插入光标所在位置;鼠标或键盘选择内容后,按Ctrl-C(或Shift-Ctrl-C)或菜单中的“复制”,内容进入剪切板,然后按Ctrl-V(或Shift-Ctrl-V)或菜单中的“粘帖”将内容插入光标所在位置。关于这两者的详细信息,请自行搜索,此处不深究。
Vim 的寄存器 “* 对应系统缓冲区, 寄存器 “+ 对应系统剪切板。
如果你是把选择的内容(在系统缓冲区中)粘帖到 Vim ,只需在普通模式下执行如下命令:
"*p
对应的,如果你是把复制的内容(在系统剪切板中)粘帖到 Vim,只需在普通模式下执行如下命令:
"+p
怎么样?格式没有错乱了吧?
这样虽然简便很多了,但还是需要输入三个字母,并且这三个字母都得使用右手小拇指输入,甚至其中的两个字母还需要 shift 键配合!
还有更简单的办法。
-
Vim 寄存器二
在 ~/.vimrc 里加入如下内容:
inoremap :setl pastegi+:setl nopastegi
这样,你就可以在插入模式下使用 Shift-Insert 快捷键在粘帖系统剪贴板中的内容了。
把上面一行替换成如下内容同样可以达到相同的效果:
inoremap "+p`]a
注意,这可是在插入模式下哦!比起第 5 节提到的方法,这种方法省去了一次 按键进入普通模式和一次 i 按键重新回到插入模式。
至此,你需要做的只是:
a. 复制你想要的内容;
b. 回到 Vim 并按 Shift-Insert 快捷键;
c. 继续编辑其他内容。
发表回复