VIM Как я могу заставить VIM расположить слова в соответствии с моим выбором?

274
Hellboy

Ну, я пишу и учусь. Я просто хочу написать текст таким образом ....

- First line. Second line. Third line. 

Но проблема в том, что линии начинаются таким образом ...

- First line. Second line. Third line 

Вы видите разницу? Ну, я провел небольшое исследование и нашел в суперпользователе нить, которая рекомендует использовать: set smartindent. Я так и сделал. Работает. Но проблема в том, что это фактически заставляет Vim следовать с того места, где начинается последняя строка. Теперь, когда я начинаю строки с левого края редактора, Vim запускает каждую новую строку, как показано во втором примере. Теперь вопрос в том, как я могу написать строки, как я показал в первом примере?

0

3 ответа на вопрос

0
Ingo Karkat

Почему вы ожидаете, что редактор всегда выберет правильный отступ? Конфигурируя определенный параметр отступа (например, хороший и универсальный :set smartindent), вы получаете то, что работает большую часть времени. В других случаях вы всегда можете сделать отступ вручную (с помощью <Tab>, при условии, что вы правильно сделали :set tabstop=... expandtabи т. Д.) Или изменить отступ после факта с помощью >>и <<.

Если у вас действительно есть определенный синтаксис, в котором правила отступа довольно просты и детерминированы (и ни один из параметров отступа по умолчанию не работает постоянно), вы должны написать собственный indentexpr(ср. :help indent-expression).

Поскольку ваш пример касается форматирования текста, это не относится к вам, и вам действительно лучше с 'smartindent'ручными исправлениями.

0
Ben

Instead of 'smartindent', I'd rather set 'autoindent', 'formatlistpat', and 'formatoptions' appropriately. For example:

" set up pattern to match list bullets and numbers let &l:formatlistpat='^\s*\%(\d\+[\]:.)}\t ]\d\@!\|[*-]\)\s*' " automatically format numbered or bulleted lists setlocal formatoptions+=n setlocal autoindent 

In the first command, you can substitute whatever "bullet" characters you like inside the [*-] group.

This will keep the indent for you, and will even apply it for you with gqip for example, but you will need to remove the indent by yourself when you enter a new line you want to not have the list format.

0
mMontu

Если вашей мотивацией является написание текстовых списков, вы должны проверить плагин vimwiki, сохранив параметры формата vim для других целей, например, для написания кода.