![Vim 粘贴 4 个空格,按“=”,缩进为 ^I 而不是空格](https://linux22.com/image/1506946/Vim%20%E7%B2%98%E8%B4%B4%204%20%E4%B8%AA%E7%A9%BA%E6%A0%BC%EF%BC%8C%E6%8C%89%E2%80%9C%3D%E2%80%9D%EF%BC%8C%E7%BC%A9%E8%BF%9B%E4%B8%BA%20%5EI%20%E8%80%8C%E4%B8%8D%E6%98%AF%E7%A9%BA%E6%A0%BC.png)
我是一名 Python 开发人员,在我工作的公司,Python 的缩进约定是两个空格而不是四个空格。
因此,当我从 vim 粘贴代码时,我注意到了这个问题:
这是我要粘贴的文本:
def four_spaces():
print "hello"
此文本是在 Mac 中使用 Chrome 复制的<cmd> c
。请注意,我vim
在 Mac OS X 中使用 iTerm。
下面是我在 vim 中粘贴此文件的步骤(因为我使用的是 Mac):
:set paste
打开粘贴模式a
追加模式<Cmd> v
在 Mac 中粘贴- 结果显示于片段 4。注意是 4 个空格
v kk
*可视模式选择上述内容=
修复缩进- 结果显示于片段 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
以及诸如此类的方式进行粘贴:
- Vim 正确地将我的代码格式化为 2 个空格
- 或者当我使用
=
来修复缩进时,它不会用^I
?来替换它。