私はVimを学んでいますが、これは簡単な作業だと思っていましたが、動作させることができません。ブラウザSOを使用していますが、解決策が機能していません。
ファイル(xml)を正しくインデントしようとしています。私が使用するコマンドは次のとおりです。
gg=G
またはggVG =(これを自分で作成したものはおそらく何か違うことをします;))
私の.vimrcは:
syntax on
filetype plugin indent on
set nu
ベレイの答えが好きです。ただし、次の方がvimrc
ファイルを変更する必要がないという点で、もう少し柔軟性があると思います。さらに、XMLファイルの選択した部分をフォーマットするのが簡単です(たまたま多くのことをしています)。
最初に、フォーマットするXMLを強調表示します。
次に、通常モードで! xmllint --format -
と入力します
下部のコマンドラインは次のようになります。
:'<,'>!xmllint --format -
次にEnterキーを押します。
選択したテキストはxmllint
コマンドに送信され、--format
'edされ、xmllint
の結果がvimで選択したテキストに配置されます。コマンドの最後の-
は、標準入力を受信するためのものです。この場合、vimがxmllint
に送信する選択テキストです。
外部プログラムを使用して、xml
ファイルをインデントします。この場合、xmllint
を選択したため、コマンドをequalprg
オプションに設定します。
:set equalprg=xmllint\ --format\ -
これで実行できます
gg=G
xmllint
を使用してxml
ファイルをフォーマットします。
vim を使用するたびに取得するには、autocommand
を使用して設定します。
autocommand
以下のコメントから
au FileType xml setlocal equalprg=xmllint\ --format\ --recover\ -\ 2>/dev/null
サードパーティ製のツールを必要としないシンプルな解決策は、開始タグ「<...>」の前に改行を挿入することです。次に、標準のvim自動インデントを使用できます。要するに:
%s/</\r</g
gg=G
は自動インデントします短い答え:matchit.vim をオンにします。 packadd matchit
を.vimrc
に追加するか、デフォルトで有効にする vim-sensible を使用できます。
長答:Vim wikiで議論されている xmllintアプローチを含む、VimでXMLを自動インデントするための多くの戦略を試しました 。 xmllint
(およびxmlformat
やtidy
などの他の外部CLIツールと同じアプローチ)の問題は、それらがすべて空白の改行を絞り出すことを主張することです。空白行、コメント、および/またはその他の意図的なフォーマットを削除せずにXMLをインデントするだけであれば、xmllint
は最良の選択ではありません。
matchit.vim スクリプトが有効になっている限り、Vimのequals(=)コマンドは既にXMLをサポートしていることがわかります。これを有効にする非常に簡単な方法の1つは、tpopeの vim-sensible を採用することです。もう1つは、packadd matchit
を.vimrc
に追加することです。そうすれば、XMLフォーマットはすぐに使用できます。
これは、〜/ .vimrcが適切にセットアップされると簡単に実現できます。
〜/ .vimrcで次のオプションを設定します。
filetype indent on
set smartindent
これにより、カーソルをファイルの先頭に移動し、最後にインデントできます:gg = G
ビジュアルモードで目的のテキストを選択し、=を押してインデントすることもできます。
VIMでは、次のコマンドを使用してファイル全体を(ハードタブを使用して)自動インデントします。
:%!XMLLINT_INDENT="^I" xmllint --format -
^I
は、次の方法で生成される単一の文字です。 CTRL+v、CTRL+i
同じ問題がありました。それが判明した、その行
set viewdir=~\.vim\views\
.vimrc
で問題が発生しました。確認してください、あなたはそれを持っていません。