Ошибки редактирования Python с Vim - PullRequest
2 голосов
/ 30 января 2011

Когда я редактирую файл Python в 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\)$'

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

Ответы [ 3 ]

2 голосов
/ 30 января 2011

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

1 голос
/ 31 января 2011

Используйте следующую моделину в ваших файлах python, чтобы настройки ее вкладок были согласованы.

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

С другой стороны, они также установлены в вашем файле .vimrc.

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

Это минимальный набор вещей, которые вы гарантируете согласованность при работе с файлом Python. Есть несколько отличных примеров vimrc, которые вы также можете использовать.

0 голосов
/ 17 марта 2014

Изменение настроек отступа у меня не сработало, поэтому я решил эту проблему, изменив файл отступов Python (/path/to/vim/indent/python.vim).

В функции GetPythonIndentЯ просто заменил все экземпляры dummy на 0.Это решило проблему для меня.

В качестве альтернативы вы можете просто установить s:maxoff на что-то смехотворно высокое, но это несколько менее элегантно.

...