Vimですべての行のインデントを修正するコマンドは何ですか?
多くの場合、コードをコピーしてリモート端末に貼り付け、すべてを台無しにしてしまいます。これを一気に直したい。
Vimですべての行のインデントを修正するコマンドは何ですか?
多くの場合、コードをコピーしてリモート端末に貼り付け、すべてを台無しにしてしまいます。これを一気に直したい。
回答:
=
、インデントコマンドが動きます。だから、gg
ファイルの先頭を取得するには=
、インデントにG
、ファイルの終わりにgg=G
。
''
(2つの単一引用符)は、元の場所にgg=G''
戻るので、インデントしてから戻る必要があります。
ターミナルに貼り付ける前に、試す:set paste
当時と:set nopaste
設定が完了した後。これにより、自動インデント、行の折り返しなど、貼り付けを混乱させる機能がオフになります。
編集:また、=
インデントよりもはるかに良い結果は通常、外部プログラムを使用して取得できることを指摘しておきます。たとえば、私は:%!perltidy
いつも走っています。astyle
、cindent
なども使用できます。そしてもちろん、それらをキーストロークにマッピングし、ファイルタイプに応じて異なるものを同じキーストロークにマッピングすることができます。
equalprg
ftplugin のオプションを設定して=
、カスタムキーバインドではなく、外部フィルターをインデントに使用できます。
formatpgm
きちんとアスタイルで使っていgq
ます。ここに私の例をいくつか示します.vimrc
:au FileType xml set fp=tidy\ -q\ -i\ -xml
およびau FileType java set fp=/usr/local/bin/astyle\ --mode=java\ --indent=tab
コードを入力せずに、現在のブロックを再度インデントしたい場合は、次のようにします。
[[=]]
=aB
カーソルをまったく動かさないようにすることもできます。
[[=]]
は、5つのコードが必要です:(
エスケープを押して、以下の組み合わせをすばやく入力します。
gg=G
1G=G
。これにより、ファイル内のすべての行がインデントされます。1G
最初の行を受け取り=
、自動インデントを開始しG
、最後の行はファイルの最後の行を受け取ります。
1gg=G
Vimではを使用します:insert
。これにより、すべてのフォーマットが保持され、自動インデントは行われません。詳細についてはhelp :insert
。
vim- autoformatは、言語に固有の外部プログラムを使用してソースファイルをフォーマットします。たとえば、Rubyファイルの「rbeautify」gem、JavaScriptの「js-beautify」npmパッケージなどです。
XMLファイルの場合、このコマンドを使用します
:1,$!xmllint --format --recover - 2>/dev/null
xmllintがインストールされている必要があります(パッケージlibxml2-utils)
(出典:http : //ku1ik.com/2011/09/08/formatting-xml-in-vim-with-indent-command.html)
これを行うためのマッピングを作成できます。
これはファイル全体を自動的にインデントし、カーソルを現在の位置に保ちます:
nmap <leader>ai mzgg=G`z