2011-01-30 5 views
2

Когда я отредактировать файл питона в Vim (с помощью 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\)$' 

Как это исправить?

+1

Вам нужно предоставить дополнительную информацию, например, версию osx, версию macvim, независимо от того, происходит ли это с пустым файлом и т. Д. У меня нет проблемы с моим mbp, работающим на снежном барсе с помощью скомпилированного macvim на основе vim 7.2 :) –

ответ

2

Я понял, что проблема. Он выдавал ошибку всякий раз, когда настройки вкладки файла отличались от настроек вкладки редактора. Например, файл test.py был установлен в 2 пробела на вкладку, а вкладки были расширены в пробелы, тогда как мой редактор был установлен в 4 пробела на вкладку, а не разворачивался.

Решение обходным путем было установить настройки вкладки Vim на параметры редактируемого файла python.

+1

Вы нашли способ исправить ошибку в синтаксическом файле Vim для Python, а не в качестве решения. Как сообщить об этом авторам файла синтаксиса? – Apalala

+0

@Apalala: Где я могу их найти? – Chetan

+1

Реальное решение заключается в том, чтобы ваш редактор заменил вкладки пробелами, как рекомендовано документами python, поэтому такой ситуации не происходит. – Falmarri

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 на что-то смехотворно высокое, но это несколько менее изящно.

Смежные вопросы