Как быстро закрыть HTML-теги в Vim? - PullRequest
110 голосов
/ 25 сентября 2008

Прошло много времени с тех пор, как мне пришлось делать любой HTML-подобный код в Vim, но недавно я снова столкнулся с этим. Допустим, я пишу несколько простых HTML:

<html><head><title>This is a title</title></head></html>

Как быстро написать эти закрывающие теги для заголовка, заголовка и HTML? Я чувствую, что упускаю какой-то очень простой способ, который не требует, чтобы я записывал их все по одному.

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

Ответы [ 11 ]

3 голосов
/ 18 августа 2016

Создание превосходного ответа от @KeithPinson (извините, репутации пока недостаточно для комментирования вашего ответа), эта альтернатива не позволит автозаполнению копировать что-либо лишнее, что может быть внутри тега html (например, classes, id, и т. д.), но не следует копировать в закрывающий тег.

ОБНОВЛЕНИЕ Я обновил свой ответ для работы с filename.html.erb файлами.
Я заметил, что мой исходный ответ не работал в файлах, обычно используемых в представлениях Rails, например some_file.html.erb, когда я использовал встроенный ruby ​​(например, <p>Year: <%= @year %><p>). Код ниже будет работать с .html.erb файлами.

inoremap ><Tab> ><Esc>?<[a-z]<CR>lyiwo</<C-r>"><Esc>O

Пример использования

Тип:

<div class="foo">[Tab]

Результат:

<div class="foo">
  |
<div>

, где | указывает положение курсора

В качестве примера добавления встроенного закрывающего тега вместо стиля блока:

inoremap ><Tab> ><Esc>?<[a-z]<CR>lyiwh/[^%]><CR>la</<C-r>"><Esc>F<i

Пример использования

Тип:

<div class="foo">[Tab]

Результат:

<div class="foo">|<div>

, где | указывает положение курсора

Это правда, что оба приведенных выше примера полагаются на >[Tab], чтобы сигнализировать о закрывающем теге (то есть вам нужно будет выбрать или встроенный или блочный стиль). Лично я использую блочный стиль с >[Tab] и встроенный стиль с >>.

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