Прошло много времени с тех пор, как мне приходилось делать какой-либо HTML-подобный код Vim
, но недавно я снова столкнулся с этим. Скажем, я пишу простые HTML
:
<html><head><title>This is a title</title></head></html>
Как мне быстро записать закрывающие теги для заголовка, заголовка и html? Я чувствую, что мне здесь не хватает действительно простого способа, который не предполагает, что я переписываю их все один за другим.
Конечно, я могу использовать CtrlPдля автозаполнения имена отдельных тегов, но на клавиатуре ноутбука меня заводят правильные скобки и косую черту.
html
xml
vim
autocomplete
WDS
источник
источник
Ctrl-_
, но это делает мой терминал мелким шрифтом.Я считаю использование плагина xmledit довольно полезным. он добавляет две части функциональности:
<p>
), он расширяет тег, как только вы вводите закрывающий>
элемент,<p></p>
и помещает курсор внутри тега в режиме вставки.Если вы затем сразу набираете другой
>
( например, вы вводите<p>>
), он заменяет это на<p>
</p>
и помещает курсор внутри тега с однократным отступом в режиме вставки.
XML ВИМ плагин добавляет свертывание коды и вложенное соответствие тегов к этим функциям.
Конечно, вам вообще не нужно беспокоиться о закрывающих тегах, если вы пишете свой HTML-контент в Markdown и используете его
%!
для фильтрации своего буфера Vim через процессор Markdown по вашему выбору :)источник
git clone https://github.com/sukima/xmledit.git ~/.vim/bundle/xmledit
. Но работает только при редактировании файлов .xml. Когда файл ext имеет формат .html или .htm, он не работает.Я люблю минимализм,
источник
imap <silent> <C-c> </<C-X><C-O><C-X>
<Esc>F<i
в конец, чтобы вернуть курсор внутрь тега.,/
Я считаю более удобным заставить vim писать за меня открывающий и закрывающий теги, а не только закрывающий. Вы можете использовать отличный плагин ragtag от Тима Поупа. Использование выглядит так (позвольте | отметить позицию курсора), которое вы вводите:
нажмите CTRL+x SPACE
и вы получите
Вы также можете использовать CTRL+ x ENTERвместо CTRL+ x SPACE, и вы получите
Ragtag может делать больше, чем просто (например, вставлять <% = stuff вокруг этого%> или DOCTYPE). Вы, вероятно, захотите проверить другие плагины автора ragtag , особенно Surround .
источник
ragtag
: vim.org/scripts/script.php?script_id=1896Если вы делаете что-то сложное, зажигание очень хорошо.
Пример с их сайта:
ul > li.item-$*3
расширяется до:с а
<C-e>
.Чтобы выполнить пример, указанный в вопросе,
доходность
источник
Также существует плагин zencoding vim: https://github.com/mattn/zencoding-vim
руководство: https://github.com/mattn/zencoding-vim/blob/master/TUTORIAL
Обновление: теперь это называется Эммет : http://emmet.io/
Отрывок из учебника:
источник
картографирование
Мне нравится, когда мои блочные теги (в отличие от встроенных) закрываются немедленно и с помощью как можно более простого ярлыка (я предпочитаю избегать использования специальных клавиш, таких как CTRLтам, где это возможно, хотя я использую их
closetag.vim
для закрытия своих встроенных тегов). Мне нравится использовать это ярлык при запуске блоков тегов (спасибо @kimilhee; это взлет его ответа):Пример использования
Тип-
result-
где
|
указывает положение курсора.объяснение
inoremap
означает создание сопоставления в режиме вставки><Tab>
означает закрывающие угловые скобки и символ табуляции; это то, что совпадает><Esc>
означает конец первого тега и выход из вставки в нормальный режимF<
означает найти последнюю открывающуюся угловую скобкуl
означает переместить курсор вправо (не копировать открывающую угловую скобку)yt>
означает перемещение от позиции курсора до следующей закрывающей угловой скобки (т.е. копирование содержимого тегов)o</
означает начать новую строку в режиме вставки и добавить открывающую угловую скобку и косую черту<C-r>"
означает вставку в режиме вставки из регистра по умолчанию ("
)><Esc>
означает закрыть закрывающий тег и выйти из режима вставкиO<Space>
означает начать новую строку в режиме вставки над курсором и вставить пробелисточник
l
означает "право", а не "лево", ха-ха ... какая забавная ошибка. Что вы думаете о моем посте? Я заметил, что вы не проголосовали.au filetype html inoremap <buffer> ...
inoremap ><Tab> ><Esc>F<lyt>o</<C-r>"><Esc>kJxi
Убрал0<Space>
и добавилkJxi
. Перейдите на 1 шаг вверх, соедините две строки, удалите один символ и перейдите в режим вставки.Проверять, выписываться
vim-closetag
Это действительно простой скрипт (также доступный в виде
vundle
плагина), который закрывает (X) HTML-теги за вас. Из этогоREADME
:Примечание: здесь
|
находится курсористочник
allml (теперь Ragtag) и Омни-завершение (<CX> <CO>) не работают с такими файлами, как .py или .java.
если вы хотите автоматически закрыть тег в этом файле, вы можете сопоставить его.
(^ R - это Contrl + R: вы можете ввести, например, Control + v, а затем Control + r)
(| - позиция курсора) теперь, если вы введете ..
<Р> ABCDE |
и введите ^ j
затем закройте тег вот так ..
<Р> ABCDE </ р> |
источник
Вот еще одно простое решение, основанное на легко доступном веб-письме:
Автоматическое закрытие HTML-тега
:iabbrev </ </<C-X><C-O>
Включение завершения
autocmd FileType xml set omnifunc=xmlcomplete#CompleteTags
источник
Основываясь на отличном ответе @KeithPinson (извините, недостаточно очков репутации, чтобы прокомментировать ваш ответ), эта альтернатива предотвратит копирование при автозаполнении чего-либо дополнительного, что может быть внутри тега html (например, классов, идентификаторов и т. Д. .), но не должны копироваться в закрывающий тег.
ОБНОВЛЕНИЕ Я обновил свой ответ для работы с
filename.html.erb
файлами.Я заметил, что мой исходный ответ не работал с файлами, обычно используемыми в представлениях Rails, например,
some_file.html.erb
когда я использовал встроенный ruby (например<p>Year: <%= @year %><p>
). Приведенный ниже код будет работать с.html.erb
файлами.Пример использования
Тип:
Результат:
где
|
указывает положение курсораИ в качестве примера добавления закрывающего тега в строку вместо стиля блока:
Пример использования
Тип:
Результат:
где
|
указывает положение курсораВерно, что оба приведенных выше примера полагаются на то,
>[Tab]
чтобы сигнализировать о закрывающем теге (это означает, что вам нужно будет выбрать либо встроенный, либо блочный стиль). Лично я использую блочный стиль>[Tab]
и встроенный стиль с>>
.источник