Как сделать так, чтобы перенос текста соответствовал текущему уровню отступа в vim? - PullRequest
13 голосов
/ 17 апреля 2009

Кто-нибудь знает способ заставить 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)

Редактировать: после прочтения ответа Дона Верве кажется, что я действительно ищу вариант breakindent, но этот параметр все еще находится в списке "Ожидание обновленных исправлений" (см. Vim TODO ). Так что я хотел бы знать, каков самый простой способ заставить vim работать с breakindent? (Мне все равно, какую версию vim я должен использовать.)

Ответы [ 5 ]

7 голосов
/ 20 ноября 2009

Я задал тот же вопрос на SuperUser , в конце концов нашел этот вопрос, нашел патч и обновил патч для работы с Vim 7.2.148 из Fedora 11.

Вы можете использовать yumdownloader --source vim для получения RPM-кода источника. Затем добавьте строку Patch3312: и строку %patch3012 -p1 в файл спецификаций и соберите rpm.

3 голосов
/ 17 апреля 2009

Вы ищете breakindent

Вы можете также обратиться к этой теме .

1 голос
/ 18 апреля 2009

Я рекомендую этот vimscript:

http://www.vim.org/scripts/script.php?script_id=974

"Этот скрипт отступа для python пытается более точно соответствовать тому, что предлагается в PEP 8 (http://www.python.org/peps/pep-0008.html). В частности, он правильно обрабатывает строки продолжения, подразумеваемые открытыми (круглые скобки), [скобки] и {скобки} по-разному вставляет многострочные операторы if / for / while. "

0 голосов
/ 18 апреля 2009

Для управления отступами кода Python см. :h ft-python-indent. Это, например, сделает Vim отступом в два раза больше shiftwidth, если вы делаете новую строку, когда есть незащищенный парен:

let g:pyindent_open_paren = '&sw * 2'

Однако &sw * 2 является значением по умолчанию, поэтому не уверен, почему он не работает для вас. Это работает для меня с ручными новыми строками или с textwidth -индуцированными новыми строками.

Вышеуказанная настройка должна быть в .vimrc или должна быть установлена ​​каким-либо образом, прежде чем Vim перейдет в режим Python. Обязательно :setf python или что вы в ином режиме в Python.

0 голосов
/ 17 апреля 2009

Я думаю, что set textwidth = 80 должно сделать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...