Vim 粘贴 4 个空格,按“=”,缩进为 ^I 而不是空格

Vim 粘贴 4 个空格,按“=”,缩进为 ^I 而不是空格

我是一名 Python 开发人员,在我工作的公司,Python 的缩进约定是两个空格而不是四个空格。

因此,当我从 vim 粘贴代码时,我注意到了这个问题:

这是我要粘贴的文本:

def four_spaces():
    print "hello"

此文本是在 Mac 中使用 Chrome 复制的<cmd> c。请注意,我vim在 Mac OS X 中使用 iTerm。

下面是我在 vim 中粘贴此文件的步骤(因为我使用的是 Mac):

  1. :set paste 打开粘贴模式
  2. a 追加模式
  3. <Cmd> v 在 Mac 中粘贴
  4. 结果显示于片段 4注意是 4 个空格
  5. v kk*可视模式选择上述内容
  6. = 修复缩进
  7. 结果显示于片段 7注意 ^I

片段 4(列表模式开启)

def four_spaces():$
    print "hello"$

片段 7(列表模式开启)

def four_spaces():$
^Iprint "hello"$

对于那些感兴趣的人,这是我的 .vimrc 文件的样子: https://gist.github.com/anonymous/20b2a1f43125c0d39932bf430c8137dc

问题:

我现在面临的问题是,当我使用 时,我有一个制表符而不是 2 个空格=。这是有问题的,因为 python 依赖于制表符缩进,并且它不能允许制表符和空格共存。我试图弄清楚为什么 = 不使用 expandtab。

问题:如何使用<Cmd> v以及诸如此类的方式进行粘贴:

  1. Vim 正确地将我的代码格式化为 2 个空格
  2. 或者当我使用=来修复缩进时,它不会用^I?来替换它。

相关内容