2011-01-30 71 views
2

当我编辑的Vim(使用的MacVim)Python文件,我按o插入新行,Vim会引发以下错误:错误编辑蟒蛇的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\)$' 

我该如何解决这个问题?

+1

您需要提供更多信息,例如osx版本,macvim版本,是否发生这种情况与空文件等我没有问题在我的MBP运行雪豹与基于vim 7.2的自定义编译的macvim :) – 2011-01-30 02:56:14

回答

2

我想出了这个问题。只要文件的标签设置与编辑器的标签设置不同,就会引发错误。例如,我的test.py文件被设置为每个选项卡2个空格,选项卡展开为空格,而我的编辑器设置为每个选项卡4个空格,不展开。

因此, 解决方案 解决方法是将Vim的选项卡设置设置为正在编辑的python文件的设置。

+1

您找到了一种方法来修补Vim的Python语法文件中的错误,而不是解决方案。如何将这个报告给语法文件的作者? – Apalala 2011-01-30 16:28:47

1

在python文件中使用以下模式行,其标签设置是一致的。

# vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4 

或者,您也可以将它们设置在您的.vimrc文件中。

set tabstop=4 
set shiftwidth=4 
set softtabstop=4 
set expandtab 

这些都是您在使用python文件时确保一致性的最小集合。 有一些很棒的vimrc例子可供你使用。

0

更改缩进设置对我无效,所以我通过修改python缩进文件(/path/to/vim/indent/python.vim)来解决此问题。

GetPythonIndent函数中,我简单地将dummy的所有实例替换为0。这为我解决了这个问题。

或者,您可以将s:maxoff设置为可笑的高点,但这不太优雅。