我正在努力学习Vim。

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

line
  line
    line

我知道你可以关闭自动缩进,但我无法让它工作,因为我有一些其他设置冲突或其他问题(在我的.vimrc中看起来很明显,但当我删除它们时似乎无关紧要)。

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

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

当前回答

来自vim:]p

从外部:“*]p或”+]p

其他回答

这对我来说很有用(+寄存器的情况,我使用的是aps之间的交换缓冲区):

imap <silent> <S-Insert> <C-O>:set noai<CR><C-R>+<C-O>:set ai<CR>

如果你在mac上,macvim似乎可以很好地处理它,而不必切换粘贴。

brew install macvim—覆盖系统vim

将此添加到~/.vimrc中,您只需在粘贴前后按F2即可:

set pastetoggle=<F2>

这是一篇文章,作者想出了如何重新映射粘贴事件以自动打开粘贴模式,然后关闭粘贴模式。适用于MacOSX上的tmux/iTerm。

我直到现在才看到另一个答案:

:se paste noai