在使用 vim 高版本的时候(6.0 及以上)会发现粘贴大段有格式或者缩进的文本信息时会导致格式混乱。
背景
在终端 vim 中粘贴代码时,发现插入的代码会有多余的缩进,而且会逐行累加。
之前的解决方案就是在本地粘贴传输,或者使用其他编辑器,比如 nano, 或者卸载 vim 使用 vi 进行操作。
实际上的原因是终端把粘贴的文本存入 Keyboard Buffer (键盘缓存)中,vim 则把这些内容作为用户的键盘输入来处理。导致在遇到换行符的时候,如果开启了自动缩进,就会默认的把上一行缩进插入到下一行的开头,最终使插入的文本格式混乱。
解决
既然了解了问题原因,解决方案有两种:
取消自动缩进
在命令模式下,使用
:set nosmartindent
和:set noautoindent
取消自动缩进,然后再粘贴即可。
完成后再开启自动缩进:set smartindent
和:set autoindent
,以上命令都可使用简写,比如:set si
更完整的说明可参考 man 手册或者 vim 的内置帮助程序:help smartindent
查看相应说明。使用粘贴模式
vim 的工作模式中,有一个专属的 Paste (粘贴)模式。在该模式下,可将文本原本的文本粘贴到 vim 中,以避免一些格式错误。
可以通过:set paste
进入粘贴模式:set nopaste
退出该模式。
附录
参考链接
本文由 柒 创作,采用 知识共享署名4.0
国际许可协议进行许可。
转载本站文章前请注明出处,文章作者保留所有权限。
最后编辑时间: 2021-01-23 15:17 PM