当我编辑Python文件时,例如:
def my_func():
print('Something')
<-- CURSOR IS HERE
我想通过键入#
来添加评论,该行会自动重新排列到该行的开头:
def my_func():
print('Something')
#<-- CURSOR IS HERE
我发现它是smartindent
选项的效果,所以要修复它,我只需运行:set nosi
(或在我的.vimrc中禁用它)。
但是在Vim的帮助下,在:h 'smartindent'
,您可以阅读:
当'cindent'打开或'indentexpr'设置时,设置'si'无效。
但我的indentexpr
选项设置如下:
:set indentexpr?
indentexpr=GetPythonIndent(v:lnum)
我当然应该避免使用smartindent
选项,因为它看起来是一个旧功能,并且只能用于C风格的语言;
但是我想知道为什么smartindent
在我编辑python文件时会有什么影响,考虑一下帮助中写的是什么?
答案 0 :(得分:2)
是的,它的行为方式与您解释的相同。
在我的情况下,devenv.exe /safemode
devenv.exe /resetskippkgs
devenv.exe /installvstemplates
devenv.exe /resetsettings
devenv.exe /resetuserdata
会返回:echo GetPythonIndent(v:lnum)
-1
有以下文字解释行为。
:h indentexpr
在设置 The expression must return the number of spaces worth of indent. It
can return "-1" to keep the current indent (this means 'autoindent' is
used for the indent).
时,它会占用si
。
现在ai
建议解决问题:
:h si
其中^ H输入为 Ctrl + V Ctrl + H
我相信你会有比解决方案更好的解决方案