协慌网

登录 贡献 社区

将文本粘贴到 vim 时关闭自动缩进

我正在努力学习 Vim。

当我从剪贴板将代码粘贴到我的文档中时,我会在每个新行的开头添加额外的空格:

line
  line
    line

我知道你可以关闭自动缩进但我无法让它工作,因为我有一些其他设置冲突或某事(在我的. vimrc 中看起来非常明显,但是当我把它们取出时似乎并不重要)。

当我粘贴代码时如何关闭自动缩进但在编写代码时仍然有自动缩进?这是我的.vimrc文件:

set expandtab  
set tabstop=2  
set shiftwidth=2  
set autoindent  
set smartindent  
set bg=dark  
set nowrap

答案

更新:更好的答案: https//stackoverflow.com/a/38258720/62202

要在粘贴代码时关闭自动注册,需要使用特殊的 “粘贴” 模式。

类型

:set paste

然后粘贴您的代码。请注意,工具提示中的文本现在显示为-- INSERT (paste) --

粘贴代码后,请关闭粘贴模式,以便在键入时自动缩进再次正常工作。

:set nopaste

但是,我总觉得那很累赘。这就是为什么我映射<F3>以便在编辑文本时可以在粘贴和 nopaste 模式之间切换我把它添加到.vimrc

set pastetoggle=<F3>

为了避免在粘贴时产生不良影响,需要设置一个选项:

set paste

在. vimrc 中有一个有用的命令是set pastetoggle=<F10>或其他一些按钮,以便在 paste 和 nopaste 之间轻松切换。

我经常使用:r! cat然后粘贴( shift + insert )内容,并按CTRL+D

无需启用和禁用,直接使用。