当我在编辑python文件时在Vim中的空行上添加#插入模式时,vim会将#移动到行的开头,但我希望将#插入到我输入它的选项卡级别.
例如,在vim中写这个
for i in range(10): #
#不会留在我输入的地方.
它是这样移动的,由vim.
for i in range(10): #
有没有人知道vim中的配置项会改变这个?
如果有帮助,我使用的是Ubuntu 8.10.
我在这里找到了答案http://vim.wikia.com/wiki/Restoring_indent_after_typing_hash
似乎vim smartindent选项是导致问题的原因.上面引用的页面描述了工作轮次,但在阅读了vim本身的smartindent帮助后(:help smartindent),我决定尝试使用cindent而不是smartindent.
我换了
set smartindent
同
set cindent
在我的.vimrc文件中
到目前为止,它工作得很好.
这个改变也修复了'<<'和'>>'的行为,用于缩进包含python注释的可视块.
在smartindent和cindent的vim帮助中有更多的配置选项和缩进信息(:help smartindent和:help cindent).
@PolyThinker虽然我对这个问题有很多回应,但在我看来,这不是一个好的解决方案.编辑器仍然认为它应该一直向左缩进 - 通过在一个以哈希开头的行上按= =来检查这一点,或者在一个带有注释的代码块被突出显示为reindent时检查=.
我强烈推荐filetype indent on
,并从你的vimrc中删除set smartindent
和set autoindent
(或set cindent
)行.其他人(显然是David Bustos)非常友好地为我们写了一个完整的缩进解析器; 它位于$ VIMDIRECTORY/indent/python.vim.
(Paul的cindent
解决方案可能适用于python,但filetype indent on
通常更有用.)
我的.vimrc中有以下几行,似乎默认安装了我的Ubuntu 8.10
set smartindent inoremap # X^H# set autoindent
我没有注意到这个问题.也许你可以试试这个.(注意^ H应该通过Ctrl-V Ctrl-H输入)