vim - 粘贴文本到vim时如何关闭自动缩进?

  显示原文与译文双语对照的内容

我正在努力学习 Vim 。

将代码粘贴到剪贴板中的文档时,在每一行的开头都会得到额外的空格:


line
 line
 line

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

如何在粘贴代码时关闭自动缩进,但在编写代码时仍有vim自动缩进? 这是我的.vimrc file:


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

时间:

要在粘贴代码时关闭自动缩进,有一个特殊的"粘贴"模式。

类型

 
:set paste

 

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

粘贴代码后,关闭 paste-mode,这样,当你键入的内容再次正确工作时,auto-indenting 。

 
:set nopaste

 

如果你在本地工作,你可以使用按键序列从系统剪贴板粘贴:

"+p

这是一个适当的vim命令,所以不用担心输入插入模式或者关闭自动插入。

当然,如果你正在远程工作( 控制台上的控制台,例如),那么这将无法工作,你应该去 :set noai,插入模式,粘贴到控制台,离开 insertMode,:set ai 路由,如其他地方所述。

在你的~/.vimrc 中粘贴它,并高兴:


" enables :Paste to just do what you want
command Paste execute 'set noai | insert | set ai'

编辑:在反射上,:rcat 是一个更好的方法,因为它是短的semantic语义的,并且不需要定制的页面。! 改为使用 !

一个更方便的方法是在你的pastetoggle中映射


set pastetoggle=<F4>

按F4时,vim自动传输 paste-mode 。

我只是将 set clipboard=unnamed 放入. vimrc.,使默认的粘贴缓冲区映射到剪贴板的剪贴板。

所以,如果我在终端中标记一些文本,我可以简单地按 p 键将它的粘贴到 vim 。 类似的,我可以在vim中拖动东西( 例如。 YY 将当前行拖到缓冲区中,并在任何窗口中单击以粘贴它。

不知道我觉得它非常方便。

...