vim粘贴代码问题

Posted 曾想仗剑走天涯

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vim粘贴代码问题相关的知识,希望对你有一定的参考价值。

vim粘贴代码问题

vim


在使用xshell进行vim操作的时候,经常会直接粘贴一些外部的代码,然后粘贴上之后会出现逐行缩进的情况,之前一直没有去找为啥,并且逐行的给他弄回去。

转自:https://my.oschina.net/joshuazhan/blog/122539

  1. 背景 
    在终端Vim中粘贴代码时,发现插入的代码会有多余的缩进,而且会逐行累加。原因是终端把粘贴的文本存入键盘缓存(Keyboard Buffer)中,Vim则把这些内容作为用户的键盘输入来处理。导致在遇到换行符的时候,如果Vim开启了自动缩进,就会默认的把上一行缩进插入到下一行的开头,最终使代码变乱。

  2. 解决

    • 取消自动缩进 
      在命令模式下,使用“:set nosmartindent”和“:set noautoindent”取消自动缩进,然后再粘贴即可。完成后再开启自动缩进“:set smartindent”和“:set autoindent”,以上命令都可使用简写,比如“:set si”,可通过Vim的帮助“:help smartindent”查看相应说明。
    • Paste模式 
      Vim的编辑模式中,还有一个Paste模式,在该模式下,可将文本原本的粘贴到Vim中,以避免一些格式错误。通过“:set paste”和“:set nopaste”进入和退出该模式。更简便的方式是,在Vim中设置一个进入和退出Paste模式的快捷键,往“~/.vimrc”中添加一行配置“set pastetoggle=”,这样即可通过F12快速的在Paste模式中切换,当然快捷键在不冲突的前提下可以任意指定,具体如何指定,参考附带的教程链接。
  3. 参考

http://vim.wikia.com/wiki/Paste_Indent_Problems 
Tutorial(Part_1)">http://vim.wikia.com/wiki/Mapping_keys_in_Vim_-Tutorial(Part_1) 
Tutorial(Part_2)">http://vim.wikia.com/wiki/Mapping_keys_in_Vim_-Tutorial(Part_2) 
Tutorial(Part_3)">http://vim.wikia.com/wiki/Mapping_keys_in_Vim_-Tutorial(Part_3)


自己的总结:

    • 以后出现这种情况,必然可以去看下是什么原因造成的,也必然有解或者无解
    • 我自己使用的paste模式,不影响其他的使用。

以上是关于vim粘贴代码问题的主要内容,如果未能解决你的问题,请参考以下文章

Vim 在复制粘贴时缩进每一行代码

记事本到 VIM 复制/粘贴代码 [关闭]

vim粘贴代码格式变乱

latex在vim中的代码片段

VIM 代码片段插件 ultisnips 使用教程

关于vim编码器粘贴代码会出现乱序问题