如何configurationvim不要在编辑python文件的时候在行首加注释
在编辑python文件的时候,当我在Vim中的一个空行插入模式中添加#时,vim将#移动到行首,但是我希望在我input的标签级插入#号。
例如,当在vim中写这个
for i in range(10): #
#不会留在那里我进入它。
它是这样移动的,由vim。
for i in range(10): #
有没有人知道vim中的configuration项会改变这个?
如果有帮助,我使用Ubuntu 8.10。
我在这里find了答案http://vim.wikia.com/wiki/Restoring_indent_after_typing_hash
vim smartindent选项似乎是问题的原因。 上面引用的页面描述了工作轮回,但是在阅读了vim本身(:help smartindent)的smartindent帮助之后,我决定尝试cindent而不是smartindent。
我replace了
set smartindent
同
set cindent
在我的.vimrc文件中
到目前为止,它的工作是完美的。
这个改变也固定了'<<'和'>>'的行为,用于缩进包含python注释的可视块。
vim帮助smartindent和cindent(:help smartindent和:help cindent)有更多的configuration选项和缩进信息。
@PolyThinker虽然我看到这个问题的答案很多,但我认为这不是一个好的解决scheme。 编辑器仍然认为它应该一直缩进到左边 – 通过在以hash开头的行上按==来检查,或者在包含注释的代码块被重新突出显示时按=。
我强烈build议使用filetype indent on
,然后从你的vimrc中删除set smartindent
并set autoindent
(或者set cindent
)行。 其他人(显然David Bustos)非常友好,为我们写了一个完整的缩进parsing器。 它位于$ VIMDIRECTORY / indent / python.vim。
(Paul的cindent
解决scheme可能适用于python,但是filetype indent on
通常更有用。)
我的.vimrc中有以下几行,似乎默认安装了我的Ubuntu 8.10
set smartindent inoremap # X^H# set autoindent
而我并没有观察到这个问题。 也许你可以试试这个。 (注意^ H应该由Ctrl-V Ctrl-Hinput)
我的解决scheme#:
如果使用cindent,则认为它是为C和C ++编码而devise的。 在这里,#表示您正在创build#DEFINE或#MACRO(),所以行为是正确的。 但对于其他语言,其中#是一个评论,这是令人不愉快的。
以下为我工作:
" cindent enable specific indenting for C code " set cin nocin set cin " cinkeys The default cinkeys causes leading # to unindent to column 0. " To prevent this, remove the 0# from the definition. " set cinkeys=0{,0},0),:,0#,!^F,o,O,e - default set cinkeys=0{,0},0),:,!^F,o,O,e
这是由'smartindent'function造成的。 如果你有:set smartindent
在你的.vimrc中:set smartindent
,你需要删除它。
其他一些答案是有用的,但是当“#”是第一个字符时,没有一个足以防止Vim重新排列一行。 PolyThinker的回答对我来说不起作用,但是它给出了一个线索,可以将“#”重新映射为“插入一个字符,然后#”,然后删除多余的字符,并把光标放在应该出现的位置。 这是这样的映射:
inoremap # X#<left><backspace><right>
这是需要的,因为vim的语法包似乎把'#'当成一个特殊字符,不pipe如何设置选项。 我想要一个以'#'开始的行与其他任何字符开始的行相同。 我find的最可靠的解决scheme是上面的映射,它实际上改变了行的第一个字符。
注意:我发现这个映射在运行I#<esc>
然后按“”之后会导致问题。 重做以前的插入。 我还没有find解决scheme。
我的Vimconfiguration没有这样做。 你可以试试这个链接中的python.vim脚本: http : //www.vim.org/scripts/script.php? script_id=790
我从~/.vimrc
删除了set smartindent
,但它仍然没有禁用smartindent。 当我打开一个.py文件并运行:set smartindent?
它显示smartindent
。
事实certificate,在~/.vimrc
是这一行:
autocmd BufRead *.py set smartindent cinwords=if,elif,else,for,while,try,except,finally,def,class ^^^^^^^^^^^
一旦我从这一行删除了“smartindent”,那么smartindent终于被禁用了,我的意见又被正确地缩进了。