Как подчеркнуть названия? (reStructuredText, Markdown, asciidoc style)

13

Различные языки разметки простого текста: reStructuredText, Markdown, asciidoc (и другие тоже) используют подчеркивание для обозначения заголовков.

Chapter 1 Title
===============

Section 1.1 Title
-----------------

Subsection 1.1.1 Title
~~~~~~~~~~~~~~~~~~~~~~

Section 1.2 Title
-----------------

Chapter 2 Title
===============

Есть ли удобный способ добавить их в vim?

добавьте символ с длиной, соответствующей строке выше.

ideasman42
источник
Он не дает прямого ответа на ваш вопрос, но стоит сказать, что некоторые языки разметки (например, Markdown) также поддерживают ведущий #символ вместо заголовка уровня 1, ##уровня 2 и т. Д. Вот как я пишу Markdown, и я нахожу это более понятным так или иначе.
Эндрю Ферье
@ Andrew Ferrier, я не использую уценку, и вопрос не в том, что касается уценки, это всего лишь пример разметки, которая может использовать такие названия. Я перечислил 3 раза разные наценки, особенно во избежание обсуждения специфики любого из языков разметки.
ideasman42
Я понимаю. Это был просто случайный комментарий для любого, кто это делает. Ваш вопрос полностью действителен, я согласен.
Эндрю Ферье

Ответы:

22

Наивный подход (без плагинов или скриптов) будет EscYpVr=.

Объяснение:

  • Yp дублирует текущую строку и помещает курсор в нижнюю строку.
  • V выбирает вторую строку в режиме Visual Line.
  • r=заменяет все символы в строке =символом.

Вы можете, конечно, :noremapэту последовательность нажатий клавиш на свой вкус.

например:

" Add Heading: Control-H
nnoremap <C-h> YpVr

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

200_success
источник
2
Это не наивно ни в коем случае.
Ромен
2
@romainl это только наивно, пока ты не сопоставишь это с чем-то более коротким, я думаю
Дхрува Сагар