121

でHTMLのようなコードを実行しなければならなかったのVimは久しぶりですが、最近、これに再び遭遇しました。私がいくつかの簡単なことを書いているとしましょうHTML

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

title、head、htmlの終了タグをすばやく書き留めるにはどうすればよいですか?ここでは、すべてを1つずつ書き留める必要のない非常に簡単な方法が欠けているように感じます。

もちろんCtrlP、個々のタグ名をオートコンプリートするために使用できますが、ラップトップキーボードで私を取得するのは、実際には角かっことスラッシュを正しく取得することです。

4

11 に答える 11

76

xmleditプラグインを使用すると非常に便利です。次の 2 つの機能が追加されます。

  1. タグ (例: type )を開くと、終了を<p>入力するとすぐにタグが展開され、挿入モードでカーソルがタグ内に配置されます。><p></p>
  2. その後すぐに別の文字を入力すると>(例: you type <p>>)、それは次のように展開されます。

    <p>

    </p>

挿入モードで、一度インデントされたタグ内にカーソルを置きます。

xml vim プラグインは、コードの折りたたみとネストされたタグ マッチングをこれらの機能に追加します。

もちろん、HTML コンテンツをMarkdownで記述し、選択した Markdown プロセッサを介して Vim バッファをフィルタリングするために使用する場合は、タグを閉じることについてまったく心配する必要はありません%!:)

于 2008-09-25T18:15:23.377 に答える
58

ミニマルなものが好きで、

imap ,/ </<C-X><C-O>
于 2009-02-10T14:55:18.440 に答える
53

終了タグだけでなく、開始タグと終了タグの両方をvimに書かせる方が便利だと思います。Tim Pope による優れたragtag プラグインを使用できます。使用法は次のようになります (let | mark cursor position) を入力します:

スパン|

CTRL+を押しますx SPACE

そしてあなたは得る

<スパン>|</スパン>

CTRL+x ENTERの代わりにCTRL+を使用することもできx SPACEます。

<スパン>
| |
</span>

Ragtag はそれ以上のことを行うことができます (例: <%= stuff around this %> や DOCTYPE を挿入)。おそらく、 ragtag の作成者による他のプラグイン、特にSurroundをチェックしたいと思うでしょう。

于 2008-09-27T18:08:09.653 に答える
38

これをチェックしてください。

closetag.vim

Functions and mappings to close open HTML/XML tags

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

私は似たようなものを使います。

于 2008-09-25T00:12:02.387 に答える
23

手の込んだことをしている場合、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>
于 2010-12-14T12:12:31.710 に答える
19

zencoding vim プラグインもあります: https://github.com/mattn/zencoding-vim

チュートリアル: https://github.com/mattn/zencoding-vim/blob/master/TUTORIAL


更新:これはEmmetと呼ばれるようになりました: 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>
  ---------------------
于 2011-12-08T01:14:14.580 に答える
14

マッピング

ブロックタグ (インラインではなく) をすぐに閉じ、できるだけ単純なショートカットを使用するのが好きです (インラインタグを閉じるためにCTRL使用しますが、可能な限り特殊キーは避けたいです)。これを使用するのが好きです。closetag.vimタグのブロックを開始するときのショートカット(@kimilheeに感謝;これは彼の答えの出発点です):

inoremap ><Tab> ><Esc>F<lyt>o</<C-r>"><Esc>O<Space>

使用例

タイプ—</p>

<p>[Tab]

結果—</p>

<p>
 |
</p>

where|はカーソル位置を示します。

説明

  • inoremap 挿入モードでマッピングを作成することを意味します
  • ><Tab> 閉じ山括弧とタブ文字を意味します。これが一致するものです
  • ><Esc> 最初のタグを終了し、挿入から通常モードにエスケープすることを意味します
  • F< 最後の開き山かっこを見つけることを意味します
  • l カーソルを右に移動することを意味します(開始山括弧をコピーしないでください)
  • yt> カーソル位置から次の閉じ山括弧の前までヤンクすることを意味します (つまり、タグの内容をコピーします)。
  • o</ 挿入モードで新しい行を開始し、開始山括弧とスラッシュを追加することを意味します
  • <C-r>" デフォルトレジスタからの挿入モードでの貼り付けを意味"します ( )
  • ><Esc> 終了タグを閉じて挿入モードから脱出することを意味します
  • O<Space> カーソルの上で挿入モードで新しい行を開始し、スペースを挿入することを意味します
于 2012-08-12T19:53:13.720 に答える
6

これは、簡単に見つけられる Web ライティングに基づいた、もう 1 つの単純なソリューションです。

  1. HTML タグの自動クローズ

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

  2. 補完をオンにする

    autocmd FileType xml set omnifunc=xmlcomplete#CompleteTags

于 2012-10-26T12:10:54.163 に答える
6

allml (現在は Ragtag ) とオムニ補完 ( <CX><CO> ) は、.py や .java などのファイルでは機能しません。

これらのファイルでタグを自動的に閉じたい場合は、次のようにマップできます。

imap <Cj> <ESC>F<lyt>$a</^R">

( ^R は Control+R です: このように入力できます Control+v そして Control+r )

(| はカーソル位置です) 入力すると..

<p>abcde|

^jと入力します

次に、このようにタグを閉じます..

<p>abcde</p>|

于 2010-05-29T09:21:43.317 に答える