2011-01-30 69 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設置爲可笑的高點,但這不太優雅。