在将内容粘贴到VIM中时出现了错误的缩进

16

我对VIM还比较陌生,但到目前为止我已经有一些掌握了。我在我的语法文件夹中使用python.vim。但是每当我把从外部复制的Python代码粘贴到VIM中时,缩进就会变得不同。VIM语法将制表符设置为8个字符宽度,而粘贴的文本则是4个空格。您可以在此图片中看到:

VIM pasted code

这是语法文件的问题吗?还是我需要调整一些设置?

4个回答

15
你可能只是将vim设置为将空格转换为制表符。尝试设置:

set expandtab

tabstop=4 shiftwidth=4 expandtab

在你的 .vimrc 文件中加入这个配置。另外,在你粘贴文本之前,执行以下操作:

:set paste

然后插入,粘贴,然后

:set nopaste

这里有一篇关于粘贴模式的好文章。


我忘了提到我已经做过那个了。如果你不这样做,缩进会更奇怪! - user3056783

7
有时在使用vim粘贴的时候,你可以可视化地选择复制的代码并按下
=

这将根据您的设置重新格式化代码。


2

尝试将tabstopshiftwidth设置为4

set tabstop=4
set shiftwidth=4

不行,似乎没有帮助。仍然缩进了所有内容。将内容粘贴到其他地方可以得到正确的结果。使用 cat <<EOT > file.py 似乎是更好的选择。 - Jari Turkia

1
" Correct bad indent while pasting.
nnoremap <Leader>p p=`]
nnoremap <Leader>P P=`]

请参见“完全基于代码的答案解释”。虽然这可能在技术上是正确的,但它并没有解释为什么它可以解决问题或应该被选为答案。我们应该在帮助解决问题的同时进行教育。 - the Tin Man

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接