Vimでは、すべての行のインデントを修正するためのコマンドは何ですか?
多くの場合、リモート端末にコードをコピーして貼り付けると、全部がめちゃくちゃになってしまいます。私はこれを一気に修正したいと思います。
=
、indentコマンドは動きを取ることができます。そのため、ファイルの先頭を取得するにはgg
、インデントを設定するには=
、ファイルの末尾にG
を付けるとgg=G
になります。
端末に貼り付ける前に、:set paste
を試してください(それが終わったら:set nopaste
)。これはあなたのペーストをめちゃくちゃにしている自動インデント、行折り返しなどの機能をオフにします。
編集:また、私は=インデントよりもはるかに良い結果が通常外部プログラムを使用することによって得られることを指摘しておくべきです。例えば、私はいつも:%!perltidy
を実行しています。 astyle、cindentなども使用できます。そしてもちろん、それらをキーストロークにマッピングすることも、ファイルタイプに応じて異なるキーストロークを同じキーストロークにマッピングすることもできます。
和音を入力せずに、自分が入っているブロックを再インデントしたい場合は、次のようにします。
[[=]]
すべてのコマンドのマスターは
gg=G
これはファイル全体をインデントします。
そして以下はVimやgVimで素早く行をインデントするために使われるシンプルで洗練されたコマンドのいくつかです。
現在の行より下のすべての行を字下げする
=G
現在行を字下げする
==
現在行の下のn
行を字下げする
n==
たとえば、現在の行の下の4行をインデントするには
4==
コードブロックをインデントするには、中括弧の1つに移動してコマンドを使用します。
=%
あなたはHTMLとXMLファイルをインデントするためにきちんとしたアプリケーション/ユーティリティを使うことができます、そしてそれはそれらのファイルをインデントすることでかなりうまくいきます。
XMLファイルを整理する
:!tidy -mi -xml %
HTMLファイルをきれいにする
:!tidy -mi -html %
エスケープキーを押してから、以下の組み合わせをすばやく入力します。
gg=G
1G=G
。ファイルのすべての行がインデントされているはずです。 1G
は最初の行を、=
は自動インデントを開始し、最後のG
はファイルの最後の行を取得します。
Vimでは:insert
を使います。これはあなたのすべてのフォーマットを保ち、自動インデントをしません。詳細についてはhelp :insert
。
:set paste
は私がPuTTYを使用し、ウィンドウ間でコードをコピーすることになっているあなたの友人です。私が:set paste
(および:set nopaste
)をオンにする前に、コピー/貼り付けをすると、まさにその理由でうまくいきました。
:set paste
、中クリック、set nopaste
を使用したくない場合は、クリップボードの内容を貼り付けることもできます。
"*p
"+p
そうすれば、通常モードを終了する必要はありません。 +
または*
を貼り付ける必要がある場合は、テキストの選択方法によって異なります。:help quoteplus
を参照してください。
vim-autoformat あなたの言語に特有の外部プログラムを使ってあなたのソースファイルをフォーマットします。 Rubyファイルの場合はrbeautify "gem"、JavaScriptの場合は "js-beautify" npmパッケージです。
複雑なC++ファイルの場合、vimの=
filterコマンドを使用したときにvimが必ずしも正しいフォーマットになるとは限りません。したがって、そのような状況では、 astyle (または unsrustify )のような外部C++フォーマッタを使用することをお勧めします。
:%!astyle
Vimの '='関数はデフォルトで内部フォーマッタを使います(これはいつもうまくいくとは限りません)が、 この質問 で議論されているように適切に設定することでスタイルのように外部フォーマッタを使うように設定することもできます。 _。
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 )
viはタブとスペースを尊重する必要がありますが、viは他のエディタとは異なる長さのタブを使用している可能性があることを考慮する必要があります。あなたは「全部がめちゃくちゃになった」より具体的になることができますか?
これを行うためのマッピングを作成できます。
これはファイル全体を自動的にインデントし、それでもカーソルをあなたがいる位置に保ちます。
nmap <leader>ai mzgg=G`z
Viエディタの場合は、:insertを使用します。これにより、すべてのフォーマットが維持され、自動インデントは挿入されません。実際にフォーマットされたファイルを表示するには、Escキーを押します。のような^私の例:
public static void main(String[] args) {
^I
^I System.out.println("Some Garbage printed upon using :insert");
}
Vimでビジュアルモードに入り、=を押すだけで上から下の行まで選択できます。選択したすべての行がインデントされます。