如何在编辑python文件时将vim配置为不在行的开头放置注释

Pau*_*den 51 python vim

当我在编辑python文件时在Vim中的空行上添加#插入模式时,vim会将#移动到行的开头,但我希望将#插入到我输入它的选项卡级别.

例如,在vim中写这个

for i in range(10):
    #
Run Code Online (Sandbox Code Playgroud)

#不会留在我输入的地方.

它是这样移动的,由vim.

for i in range(10):
#
Run Code Online (Sandbox Code Playgroud)

有没有人知道vim中的配置项会改变这个?

如果有帮助,我使用的是Ubuntu 8.10.

Pau*_*den 32

我在这里找到了答案http://vim.wikia.com/wiki/Restoring_indent_after_typing_hash

似乎vim smartindent选项是导致问题的原因.上面引用的页面描述了工作轮次,但在阅读了vim本身的smartindent帮助后(:help smartindent),我决定尝试使用cindent而不是smartindent.

我换了

set smartindent
Run Code Online (Sandbox Code Playgroud)

set cindent
Run Code Online (Sandbox Code Playgroud)

在我的.vimrc文件中

到目前为止,它工作得很好.

这个改变也修复了'<<'和'>>'的行为,用于缩进包含python注释的可视块.

在smartindent和cindent的vim帮助中有更多的配置选项和缩进信息(:help smartindent和:help cindent).

  • 啊,我的.vimrc中有"filetype plugin indent on",也许这对我来说是正确的.http://vimdoc.sourceforge.net/htmldoc/filetype.html (2认同)

小智 20

@PolyThinker虽然我对这个问题有很多回应,但在我看来,这不是一个好的解决方案.编辑器仍然认为它应该一直向左缩进 - 通过在一个以哈希开头的行上按= =来检查这一点,或者在一个带有注释的代码块被突出显示为reindent时检查=.

我强烈推荐filetype indent on,并从你的vimrc中删除set smartindentset autoindent(或set cindent)行.其他人(显然是David Bustos)非常友好地为我们写了一个完整的缩进解析器; 它位于$ VIMDIRECTORY/indent/python.vim.

(Paul的cindent解决方案可能适用于python,但filetype indent on通常更有用.)


Pol*_*ker 12

我的.vimrc中有以下几行,似乎默认安装了我的Ubuntu 8.10

set smartindent
inoremap # X^H#
set autoindent
Run Code Online (Sandbox Code Playgroud)

我没有注意到这个问题.也许你可以试试这个.(注意^ H应该通过Ctrl-V Ctrl-H输入)