注释(#)在Vim中以插入模式进入行首

时间:2010-01-14 09:24:05

标签: python vim comments indentation

每当我想在vim的缩进行中添加注释时,我点击 Shift - o (在当前上方打开一个新行,切换到插入模式)并开始输入Python注释(使用#)。然后,该哈希神奇地移动到行的开头(没有缩进),我必须单击选项卡几次。

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

4 个答案:

答案 0 :(得分:59)

我想你的.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

答案 1 :(得分:9)

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

autocmd BufRead *.py inoremap # X<c-h>#

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

答案 2 :(得分:1)

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

所以如果你有:

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

输入 c 空格,你得到:

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

答案 3 :(得分:0)

之所以遇到这个问题,是因为使用cindent时haskell存在相同的问题。

您可以通过修改cinkey的内容来配置提示重新缩进的内容:

我在vimrc中添加了以下内容,以停止#触发行为

"when you type a hash as the first character stop it triggering reindent
set cinkeys -=0#