在Vim中编辑Python时出错
当我在Vim中编辑一个Python文件(使用MacVim),然后按下o
键来插入新的一行时,Vim会出现以下错误:
Error detected while processing function <SNR>20_CheckAlign..GetPythonIndent:
line 30:
E121: Undefined variable: dummy
Press ENTER or type command to continue
Error detected while processing function <SNR>20_CheckAlign..GetPythonIndent:
line 30:
E15: Invalid expression: line('.') < 7 ? dummy : synIDattr(synID(line('.'), col('.')
, 1), 'name') =~ '\(Comment\|String\)$'
我该怎么解决这个问题呢?
4 个回答
1
我尝试改变缩进设置,但没有成功,所以我通过修改一个Python的缩进文件来解决这个问题,文件路径是(/path/to/vim/indent/python.vim)。
在这个 GetPythonIndent
函数里,我把所有的 dummy
替换成了 0
。这样就解决了我的问题。
另外,你也可以把 s:maxoff
设置得非常高,但这样做就显得没那么优雅了。
1
在你的Python文件中,使用下面的设置,这样你的制表符(Tab)设置就会保持一致。
# vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4
另外,你也可以在你的.vimrc
文件中设置这些选项。
set tabstop=4
set shiftwidth=4
set softtabstop=4
set expandtab
这些是确保你在处理Python文件时保持一致性的一些基本设置。网上有很多不错的vimrc
示例,你也可以参考使用。
2
我找到了问题所在。每当文件的制表符设置和编辑器的制表符设置不一致时,就会出现错误。例如,我的 test.py 文件是每个制表符用 2 个空格表示,并且制表符被转换成了空格,而我的编辑器设置是每个制表符用 4 个空格表示,并且没有转换。
所以,解决办法就是把 Vim 的制表符设置调整为正在编辑的 Python 文件的设置。