Умный перенос в Vim

Книжная виртуальная машина Java Jon Meyer имеет пример ряда инструкций по байт-коду, которые вызвали JVM к дампу ядра. Я не могу найти свою копию этой книги. Если у кого-либо там есть тот, ищите его и отправьте ответ.

75
задан Sasha 30 July 2009 в 02:28
поделиться

6 ответов

Я не думаю, что возможно иметь точно такой же отступ, но вы все равно можете получить лучший обзор, установив опцию 'showbreak'.

:set showbreak=>>>

Пример:

<p>
    <a href="http://www.example.com">
        This is a bogus link, used to demonstrate
>>>an example
    </a>
</p>

Настоящее вещь выглядит лучше, чем пример кода выше, потому что Vim использует другой цвет для '>>>'.

17
ответ дан 24 November 2019 в 11:40
поделиться

ОБНОВЛЕНИЕ: в июне 2014 года патч для поддержки breakindent опции был объединен с Vim (версия 7.4.346 или более поздняя для лучшей поддержки) .


Вы также можете попробовать : установить nowrap , что позволит vim отображать длинные строки путем прокрутки вправо. Это может быть полезно для изучения общей структуры документа, но может быть менее удобным для фактического редактирования.

Другие варианты, близкие к тому, что вы ищете, - это linebreak и showbreak ]. С помощью showbreak вы можете изменять то, что отображается на левом краю строк, которые обертываются, но, к сожалению, он не позволяет изменять отступ в зависимости от текущего контекста.

8
ответ дан 24 November 2019 в 11:40
поделиться
:set smartindent
:set autoindent

Я думаю, вам все равно придется использовать возврат

3
ответ дан 24 November 2019 в 11:40
поделиться

Если ваш HTML-код достаточно хорошо сформирован, его использование через xmllint может помочь:

:%!xmllint --html --format
2
ответ дан 24 November 2019 в 11:40
поделиться

Единственный известный мне способ сделать это - использовать символ возврата (как упоминалось Cfreak) и объединить параметр textwidth с различными параметрами отступа . Если ваш отступ настроен правильно (как я полагаю, он настроен по умолчанию с синтаксисом html, но в противном случае см. Параметры autoindent и smartindent ), вы можете:

:set formatoptions = tcqw
:set textwidth = 50
gggqG

Если у вас есть любую настройку параметра formatoptions , может быть лучше просто выполнить:

:set fo += w
:set tw = 50
gggqG

Что это делает:

:set fo+=w  " Add the 'w' flag to the formatoptions so 
            " that reformatting is only done when lines
            " end in spaces or are too long (so your <p>
            " isn't moved onto the same line as your <a...).
:set tw=50  " Set the textwidth up to wrap at column 50
gg          " Go to the start of the file
gq{motion}  " Reformat the lines that {motion} moves over.
G           " Motion that goes to the end of the file.

Обратите внимание, что это не то же самое, что мягкое обертывание: оно будет переносить строки в исходный файл, а также на экране (если, конечно, вы его не сохраните!). Есть и другие настройки, которые можно добавить в параметры формата , которые будут автоматически форматироваться по мере ввода: подробности в : help fo-table .

Для получения дополнительной информации см .:

:help 'formatoptions'
:help fo-table
:help 'textwidth'
:help gq
:help gg
:help G
:help 'autoindent'
:help 'smartindent'
5
ответ дан 24 November 2019 в 11:40
поделиться

Существует патч для этого, но он затянулся на годы и в последний раз, когда я проверял, не применялся чисто. См. запись "Correctly indent wrapped lines" в http://groups.google.com/group/vim_dev/web/vim-patches - я бы очень хотел, чтобы это попало в основную ветку.

Обновление: эта ссылка, похоже, сгнила. Вот более актуальная версия патча.

Обновление 2: он был объединен с предыдущим (начиная с версии 7.4.345), так что теперь вам нужно только :установить breakindent.

33
ответ дан 24 November 2019 в 11:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: