Ответ 1
Вы ищете breakindent
Вы также можете обратиться к этот поток.
Кто-нибудь знает, как заставить vim обертывать длинные строки текста таким образом, чтобы позиция обернутого текста основывалась на отступе текущей строки? Я не хочу переформатировать свой код, просто чтобы он отображался красиво.
Например, если я установил свои настройки так, чтобы строка:
print 'ProcessorError(%r, %r, %r)' % (self.file, self.index, self.message)
отображается при завершении как:
print 'ProcessorError(%r, %r, %r)' % (self.file, self.index,
self.message)
то, если я напишу блок кода следующим образом:
def __repr__(self):
return 'ProcessorError(%r, %r, %r)' % (self.file, self.index, self.message)
он обертывается примерно так:
def __repr__(self):
return 'ProcessorError(%r, %r, %r)' % (self.file, self.index,
self.message)
Я бы предпочел, чтобы он отображался как:
def __repr__(self):
return 'ProcessorError(%r, %r, %r)' % (self.file, self.index,
self.message)
Изменить: после прочтения ответа на "Дон Werve", похоже, что я действительно ищу вариант breakindent
, но этот параметр по-прежнему находится в списке "Ожидание обновленных патчей" (см. Vim TODO). Итак, что я хотел бы знать, это самый простой способ заставить vim работать с breakindent
? (Мне все равно, какую версию vim мне нужно использовать.)
Вы ищете breakindent
Вы также можете обратиться к этот поток.
Я спросил тот же вопрос о SuperUser, в итоге нашел этот вопрос, нашел патч и обновил патч для работы с Vim 7.2.148 от Fedora 11.
Вы можете использовать yumdownloader --source vim
, чтобы получить исходный RPM. Затем добавьте строку Patch3312:
и строку %patch3012 -p1
в spec файл и создайте rpm.
Я рекомендую этот vimscript:
http://www.vim.org/scripts/script.php?script_id=974
"Этот отступ script для python пытается более точно сопоставить то, что предлагается в PEP 8 (http://www.python.org/peps/pep-0008.html). В частности, он обрабатывает строки продолжения, подразумеваемые открытыми (круглые скобки), [скобки] и {фигурные скобки} правильно, и отбрасывает многострочные выражения if/for/while по-разному."
Я думаю, что set textwidth = 80 должен это сделать.
Для управления отступом кода Python см. :h ft-python-indent
. Это, например, приведет к отступу Vim в два раза больше, чем к shiftwidth
, если вы сделаете новую строку, в то время как есть незакрытый палец:
let g:pyindent_open_paren = '&sw * 2'
Однако &sw * 2
по умолчанию, поэтому не уверен, почему он не работает для вас. Он работает для меня с использованием ручной новой строки или с textwidth
-индуцированными символами новой строки.
Вышеуказанный параметр должен находиться в .vimrc
или должен быть установлен каким-то образом, прежде чем Vim войдет в режим Python. Обязательно :setf python
или что вы в противном случае находитесь в режиме Python.