web-dev-qa-db-ja.com

vimでのxmlタグの折りたたみ(展開と折りたたみ)(xml解析)

そんなこと知ってる % vimでは1つのタグから別のタグにジャンプします。ビジュアルモードを使用して、xmlファイル内のタグ間のブロック全体を選択する方法も知っています。 o 上から下のタグにジャンプします。

複数のWeb検索を実行し、.vimrcの次の行を使用してmatchitプラグインをインストールしました。

filetype plugin on
runtime macros/matchit.vim

この投稿 を見つけて、closetag.vimを試しました。

私は巨大なxmlファイルをレビューし、複数のモニター(およびメガネ)を使用している場合でも、ファイルの特定のセクションを折りたたむことができると便利です。


デフォルトで、またはプラグインを使用して、MacVimまたはvimのタグ間のセクションを折りたたんだり展開したりする方法はありますか?

16
Deesbek

必要な機能は「折りたたみ」と呼ばれます。

基本的に、Vimに利用可能な'foldmethod'のいずれかを使用し、zazrzMなどのコマンドで各行の'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'
14
romainl

インデント方式はほとんど機能しましたが、動作方法が少し奇妙であることがわかりました。基本的に、タグ自体ではなく、タグの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">------------------------------------
19
adam_0

これは@ 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とその友達をすぐに折りたたむことができます。

8
ronen