[О блоге]
[наверх]
[пред]
[2017-05-19 19:24:45+03:00]
[888573d42b011c54fced0339adc79969fface36d]
Темы: [tip][vim]
Форматирование *-списков в Vim
Я годами немного мучался (до есть было не очень приятно что автоматика
не срабатывает или работает не как надо) с ситуациями когда пишешь
списки вида:
* foo...
baz
* bar
Автоматика считает что "*" является комментарием и после ввода
* foo...
и Enter он создаёт (> символ показывает где курсор):
* foo...
* >
а хочется:
* foo...
>
Но я как-то рефлекторно просто выделял всё звёздочки кроме первой
визуальным вертикальным выделением и делал "r ".
Но основная проблема это форматирование (gq команда) абзаца, где он
делает:
* foo...
baz
Эту проблему я решал так: писал весь текст без звёздочки в начале, но с
двумя пробелами, форматировал, а потом просто "r*" вставлял звёздочку
где надо.
Минут за десять всё же добился результата который мне нужен был за счёт
трёх команд в vimrc:
set comments-=mb:*
set formatlistpat=^\\s*\\*\ \\s*
set formatoptions+=n
Во-первых, говорим что звёздочка в начале строки не является
комментарием. Да, это ломает наверное хорошую работу в языках типа C++
где есть /* ... * ... */ комментарии. Но я такие не использую и поэтому
оно ничего не ломает.
Во-вторых, говорим что список это сколько-то пробелов в начале строки,
звёздочка, после неё пробел, а дальше возможно ещё пробелы. Это на самом
деле переопределённый формат для понимания того, что такое нумерованный
список. Я их не пишу и поэтому просто так вот упростил.
В-третьих, добавляем учёт этих нумерованных списков (которые уже без
цифр, а просто со звёздочкой) при форматировании текста.
То бишь, из коробки Vim предоставляет все ручки управления для
идеального поведения и решения двух проблем с этими списками у меня.
А я думал что небось придётся делать какое-нибудь переопределение
команды форматирования, где я удалю эту звёздочку, сделаю форматирование
и снова её поставлю. То есть просто автоматизирую то, что делал руками.
[оставить комментарий]