每当我想在vim的缩进行中添加注释时,我点击 Shift - o (在当前上方打开一个新行,切换到插入模式)并开始输入Python注释(使用#
)。然后,该哈希神奇地移动到行的开头(没有缩进),我必须单击选项卡几次。
任何人都知道如何解决它?
答案 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#