そんなこと知ってる % vimでは1つのタグから別のタグにジャンプします。ビジュアルモードを使用して、xmlファイル内のタグ間のブロック全体を選択する方法も知っています。 o 上から下のタグにジャンプします。
複数のWeb検索を実行し、.vimrcの次の行を使用してmatchitプラグインをインストールしました。
filetype plugin on
runtime macros/matchit.vim
この投稿 を見つけて、closetag.vimを試しました。
私は巨大なxmlファイルをレビューし、複数のモニター(およびメガネ)を使用している場合でも、ファイルの特定のセクションを折りたたむことができると便利です。
必要な機能は「折りたたみ」と呼ばれます。
基本的に、Vimに利用可能な'foldmethod'
のいずれかを使用し、za
、zr
、zM
などのコマンドで各行の'foldlevel'
を管理するように指示します。詳細はすべて:help folding
にあります。
これらの行をvimrc
に追加すると、適切な出発点が得られます。
augroup XML
autocmd!
autocmd FileType xml setlocal foldmethod=indent foldlevelstart=999 foldminlines=0
augroup END
これらの設定では、ファイルをロードするときにすべての折り目が開いている必要があり、各行の折り目レベルはそのインデントから導出され、単一の行を折りたたむことができるはずです。
zm
を使用して折り畳みを増やし、zr
を使用して折り畳みを減らし、zc
を使用して折り畳みを閉じ、zo
を使用して折り畳みを開き、za
を使用して切り替えますこれらの2つの状態の間では、zM
ですべての折り畳みを閉じ、zR
でそれらを開きます。
ドキュメンテーション:
:help folding
:help 'foldmethod'
:help 'foldlevelstart'
:help 'foldminlines'
インデント方式はほとんど機能しましたが、動作方法が少し奇妙であることがわかりました。基本的に、タグ自体ではなく、タグのcontentで折りたたまれています。これは私にとってはうまくいきました Vim wiki :
let g:xml_syntax_folding=1
au FileType xml setlocal foldmethod=syntax
このメソッドは、実際のタグ自体を折り畳みます。次に例を示します。
<MyLines group="first">
<Foo value="1"/>
<Foo value="2"/>
<Foo value="3"/>
</MyLines>
<MyLines group="second">
<Foo value="4"/>
<Foo value="5"/>
<Foo value="6"/>
</MyLines>
1行目または5行目にzc
と入力すると、次のようになります。
+-- 5 lines: <MyLines group="first">------------------------------------
<MyLines group="second">
<Foo value="4"/>
<Foo value="5"/>
<Foo value="6"/>
</MyLines>
の代わりに:
+-- 10 lines: <MyLines group="first">------------------------------------
これは@ adam_0の回答として取得されますが、自動コマンドを使用して(@romaniの回答に従って)、syntax on
@ Paulのコメントに従って含まれています。
augroup XML
autocmd!
autocmd FileType xml let g:xml_syntax_folding=1
autocmd FileType xml setlocal foldmethod=syntax
autocmd FileType xml :syntax on
autocmd FileType xml :%foldopen!
augroup END
:%foldopen!
最後の行はすべての折り目を開き、ファイルをロードしたときにファイルがWYSWIGになるようにします。ただし、必要に応じて、zM
とその友達をすぐに折りたたむことができます。