当 Vim 的自动缩进打开的时候,你粘贴到终端 Vim 的 code 会出现缩进错乱的情况。当然这个问题只是出现在从其他应用里面复制内容,并且不是用的 MacVim 或者 Gui Vim 的时候.
原因是在终端的 vim 中没有相应的程序来处理这个从其他应用复制粘贴的过程,所以 Vim 通过插入键盘输入的 buffer 来模拟这个粘贴的过程,这个时候 Vim 会以为这是用户输入的。
问题就是出在这:当上一行结束,光标进入下一行时 Vim 会自动以上一行的的缩进为初始位置。这样就会破坏原始文件的缩进。
好在 Vim 提供了 past 和 pastetoggle 选项,你只要把这一行加入你的 vimrc 文件。
set pastetoggle=
还有更高级的
nnoremap :set invpaste paste?
imap :set invpaste paste?
set pastetoggle=
这样可以在状态栏中显示 paste,不赖吧。。。