在Vim的插入模式下,注释(#)到行首

每当我想在vim中给一个缩进行添加一个注释,我就按下Shifto (打开当前的新行,切换到插入模式),然后开始input一个Python注释(使用# )。 然后,这个哈希值被神奇地移动到了行的开头(没有缩进),我必须点击几次tab。

任何人都知道如何解决它?

我想你已经在你的.vimrc中set smartindent

参见:h smartindent

 When typing '#' as the first character in a new line, the indent for that line is removed, the '#' is put in the first column. The indent is restored for the next line. If you don't want this, use this mapping: ":inoremap # X^H#", where ^H is entered with CTRL-V CTRL-H. When using the ">>" command, lines starting with '#' are not shifted right. 

我相信你编码python时不需要smartindenting。 所以只要从你的设置中删除它或添加以下到您的.vimrc:

 au! FileType python setl nosmartindent 

尝试把它放在你的.vimrc中:

 autocmd BufRead *.py inoremap # X<ch># 

这将使得在Python源文件中插入hash(磅)符号总是缩进。

您可能想尝试Nerd Commenter ,这是一个插件,允许您自动添加评论到大多数语言的行。 您只需将光标放在您感兴趣的行上,然后键入c Space并将该行注释掉。 相同的击键将删除注释以显示该行。

所以如果你有:

 def func(): print("indented") <- cursor position in command mode 

types c 空间 ,你会得到:

 def func(): #print("indented")