在Vim中编辑Python时出错

4 投票
4 回答
1465 浏览
提问于 2025-04-16 10:52

当我在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 文件的设置。

撰写回答