如何配置vim在编辑Python文件时不在行首添加注释
在使用Vim编辑Python文件时,如果我在空行的插入模式下输入一个#,Vim会把这个#移动到行的最前面。但我希望这个#能保持在我输入的位置,也就是我按下Tab的地方。
比如说,当我在Vim中写这个:
for i in range(10):
#
这个#并不会停留在我输入的位置。
Vim会把它移动成这样:
for i in range(10):
#
有没有人知道Vim中有什么设置可以改变这个行为吗?
顺便提一下,我使用的是Ubuntu 8.10。
8 个回答
我在我的 .vimrc 文件里有以下几行,这些似乎是我在 Ubuntu 8.10 系统中默认安装的。
set smartindent
inoremap # X^H#
set autoindent
而且我没有发现什么问题。也许你可以试试这个。(注意,输入 ^H 要按 Ctrl-V 然后再按 Ctrl-H)
@PolyThinker 虽然我看到很多人对这个问题的回答都是这样,但我觉得这并不是个好办法。编辑器还是认为代码应该靠左对齐——你可以通过在以#开头的行上按==,或者在高亮的代码块中按=来检查重新缩进的效果。
我强烈建议使用 filetype indent on
,并且把你的vimrc文件中的 set smartindent
和 set autoindent
(或者 set cindent
)这几行删掉。还有其他人(显然是David Bustos)很贴心地为我们写了一个完整的缩进解析器;它的位置在 $VIMDIRECTORY/indent/python.vim。
(Paul的 cindent
解决方案可能对Python有效,但 filetype indent on
更加通用。)
我在这里找到了解决办法 http://vim.wikia.com/wiki/Restoring_indent_after_typing_hash
看起来是vim的智能缩进(smartindent)选项导致了这个问题。上面提到的页面介绍了一些解决方法,但在阅读了vim中关于智能缩进的帮助文档(:help smartindent)后,我决定试试cindent,而不是继续用智能缩进。
我在我的.vimrc文件中把
set smartindent
替换成
set cindent
到目前为止,这个方法运行得很好。
这个改动还修复了'<<'和'>>'在缩进包含Python注释的可视块时的表现。
关于缩进的更多配置选项和信息,可以在vim的帮助文档中找到智能缩进和cindent的相关内容(:help smartindent 和 :help cindent)。