Как можно быстро закрыть HTML-теги в Vim?
Это было некоторое время, так как я должен был сделать любой HTML-подобный код в Vim, но недавно я снова столкнулся с этим. Скажем, я пишу какой-то простой HTML:
<html><head><title>This is a title</title></head></html>
как мне быстро написать эти закрывающие теги для заголовка, головы и html? Я чувствую, что мне не хватает какого-то очень простого способа здесь, который не предполагает, что я буду записывать их все по одному.
конечно, я могу использовать CtrlP для автозаполнения отдельного тега имена, но то, что получает меня на клавиатуре ноутбука, на самом деле получает скобки и Слэш правильно.
11 ответов:
зацени..
closetag.ВИМ
Functions and mappings to close open HTML/XML tagshttps://www.vim.org/scripts/script.php?script_id=13
Я использую нечто подобное.
Я нахожу с помощью xmledit плагин очень полезен. он добавляет две части функциональности:
- при открытии тега (например тип
<p>), Он расширяет тег, как только вы вводите закрытие>на<p></p>и помещает курсор внутри тега в режиме вставки.если вы сразу же наберете другой
>(например вы типа<p>>), Он расширяет это в
<p>
</p>и помещает курсор внутри тега, с отступом один раз, в режиме вставки.
The xml плагин vim добавляет сворачивание кода и вложенный тег, соответствующий этим функциям.
конечно, вам не нужно беспокоиться о закрытии тегов вообще, если вы пишете свой HTML-контент в Markdown и использовать
%!для фильтрации буфера Vim через процессор Markdown по вашему выбору:)
Я считаю более удобным, чтобы vim писал как открывающий, так и закрывающий тег для меня, а не только закрывающий. Вы можете использовать отлично ragtag плагин Тим Поуп. Использование выглядит так (пусть / отметьте положение курсора) вы набираете:
span|пресс CTRL+xпробел
и вы
<span>|</span>вы также можете использовать CTRL+xвведите вместо CTRL+xпробел, а вы
<span> | </span>Ragtag может сделать больше, чем просто это (например. вставьте или DOCTYPE). Вы, вероятно, хотите проверить другие плагины по автор ragtag, особенно surround.
если вы делаете что-нибудь сложное, sparkup очень хорошо.
пример с их сайта:
ul > li.item-$*3расширяется:<ul> <li class="item-1"></li> <li class="item-2"></li> <li class="item-3"></li> </ul>С
<C-e>.выполнить пример, приведенный в вопросе,
html > head > title{This is a title}доходность
<html> <head> <title>This is a title</title> </head> </html>
существует также плагин zencoding vim:https://github.com/mattn/zencoding-vim
учебник:https://github.com/mattn/zencoding-vim/blob/master/TUTORIAL
обновление: это теперь называется Эммет: http://emmet.io/
отрывок из учебника:
1. Expand Abbreviation Type abbreviation as 'div>p#foo$*3>a' and type '<c-y>,'. --------------------- <div> <p id="foo1"> <a href=""></a> </p> <p id="foo2"> <a href=""></a> </p> <p id="foo3"> <a href=""></a> </p> </div> --------------------- 2. Wrap with Abbreviation Write as below. --------------------- test1 test2 test3 --------------------- Then do visual select(line wize) and type '<c-y>,'. If you request 'Tag:', then type 'ul>li*'. --------------------- <ul> <li>test1</li> <li>test2</li> <li>test3</li> </ul> --------------------- ... 12. Make anchor from URL Move cursor to URL --------------------- http://www.google.com/ --------------------- Type '<c-y>a' --------------------- <a href="http://www.google.com/">Google</a> ---------------------
картография
мне нравится, чтобы мои теги блоков (в отличие от встроенных) закрывались сразу и с максимально простым ярлыком (мне нравится избегать специальных клавиш, таких как CTRL там, где это возможно, хотя я использую
closetag.vimчтобы закрыть мои встроенные теги.) Мне нравится использовать этот ярлык при запуске блоков тегов (благодаря @kimilhee; это взлет его ответа):inoremap ><Tab> ><Esc>F<lyt>o</<C-r>"><Esc>O<Space>образец использование
типа
<p>[Tab]результат-
<p> | </p>здесь
|указывает положение курсора.объяснение
inoremapозначает создайте отображение в режиме вставки><Tab>означает закрывающая угловые скобки и символ табуляции; это то, что соответствует><Esc>означает завершите первый тег и выйдите из insert в normal режимF<означает найдите последнюю открывающую угловую скобкуlозначает переместите курсор вправо (не копируйте открывающую угловую скобку)yt>означает дергать из положения курсора до следующего закрытия угловой скобки (т. е. копировать содержимое тегов)o</означает начните новую линию в режиме вставки и добавьте угловую скобку открытия и Слэш<C-r>"означает вставить в режиме вставки из регистра по умолчанию (")><Esc>означает закройте закрывающий тег и выйдите из режима вставкиO<Space>означает запустите новую строку в режиме вставки над курсором и вставьте пробел
allml (теперь Ragtag ) и Omni-завершение (
) не работает в файле типа .py или.Ява. Если вы хотите закрыть тег автоматически в тех, файл, вы можете составить карту Вот так.
imap <C-j> <ESC>F<lyt>$a</^R">(^R является Contrl+R : вы можете ввести как этот Control+v, а затем Control+r)
(|is положение курсора ) теперь, если вы печатаете..
abcde|
и введите ^j
затем он закрывает тег, как этот..
abcde/
проверить
vim-closetagэто очень простой скрипт (также доступен как
vundleплагин), который закрывает (X)HTML-теги для вас. От него жеREADME:если это текущий контент:
<table|теперь нужно нажать > содержание будет:
<table>|</table>а теперь если нажать > опять же, контент будет быть:
<table> | </table>
Примечание:
|здесь курсор
вот еще одно простое решение, основанное на легко находимой веб-записи:
автоматическое закрытие 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файлы.inoremap ><Tab> ><Esc>?<[a-z]<CR>lyiwo</<C-r>"><Esc>Oпример использования
тип:
<div class="foo">[Tab]результат:
<div class="foo"> | <div>здесь
|указывает положение курсораи в качестве примера добавления закрывающего тега inline вместо блочного стиля:
inoremap ><Tab> ><Esc>?<[a-z]<CR>lyiwh/[^%]><CR>la</<C-r>"><Esc>F<iобразец использование
тип:
<div class="foo">[Tab]результат:
<div class="foo">|<div>здесь
|указывает положение курсораэто правда, что оба вышеприведенных примера полагаются на
>[Tab]чтобы сигнализировать закрывающий тег (что означает, что вам нужно будет выбрать или inline или блок стиля). Лично я использую блок-стиль с>[Tab]и встроенный стиль с>>.
Comments