Как можно быстро закрыть HTML-теги в Vim?



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



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


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



конечно, я могу использовать CtrlP для автозаполнения отдельного тега имена, но то, что получает меня на клавиатуре ноутбука, на самом деле получает скобки и Слэш правильно.

719   11  

11 ответов:

зацени..

closetag.ВИМ

Functions and mappings to close open HTML/XML tags

https://www.vim.org/scripts/script.php?script_id=13

Я использую нечто подобное.

Я нахожу с помощью xmledit плагин очень полезен. он добавляет две части функциональности:

  1. при открытии тега (например тип <p>), Он расширяет тег, как только вы вводите закрытие > на <p></p> и помещает курсор внутри тега в режиме вставки.
  2. если вы сразу же наберете другой > (например вы типа <p>>), Он расширяет это в

    <p>

    </p>

и помещает курсор внутри тега, с отступом один раз, в режиме вставки.

The xml плагин vim добавляет сворачивание кода и вложенный тег, соответствующий этим функциям.

конечно, вам не нужно беспокоиться о закрытии тегов вообще, если вы пишете свой HTML-контент в Markdown и использовать %! для фильтрации буфера Vim через процессор Markdown по вашему выбору:)

Мне нравятся минимальные вещи,

imap ,/ </<C-X><C-O>

Я считаю более удобным, чтобы 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>

Примечание: | здесь курсор

вот еще одно простое решение, основанное на легко находимой веб-записи:

  1. автоматическое закрытие HTML-тега

    :iabbrev </ </<C-X><C-O>

  2. завершение поворота на

    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

    Ничего не найдено.