LoginSignup
7
5

More than 5 years have passed since last update.

Vimで複数のファイルのインデントを非対話に修正する

Last updated at Posted at 2017-02-18

Vimと非対話

Vimは対話型のテキストエディタですが、非対話による操作が可能です。この記事では、複数のファイルをインデント整形する例を紹介します。

まとめ

以下のコマンドで、カレントディレクトリにある*.cppファイルをVimの自動インデントを使って整形できます。長いコマンドですので、便利コマンドとしてシェルスクリプトに登録しておくのがいいでしょう。

xargs -oを利用している理由はコマンドから出力したファイル名をvimで開く方法を参照してください。

autoindent.sh
find . -name '*.cpp' | xargs -o vim -N -i NONE -u NONE -c 'normal! gg=G' -c 'wq!'

別解

@h_east さんからWindowsでも動作するコマンドを教えていただきました。以下のコマンドでは、あらかじめ*.cppに該当するファイルをVimに読み込んでいます。読み込み済みバッファの全てに対して、norm gg=Gを適用し、インデントを修正します。

vim -Nu NONE -i NONE *.cpp +"argdo exec 'norm gg=G' | up" +q

解説

簡単な解説を載せます。より詳しく知りたい人は、vim -hhelp - Vim日本語ドキュメント、以下の参考リンクを見ると良いでしょう。

Vimの起動オプション

-NでVi非互換にし、-i NONEviminfoを汚さないようにします。また、-u NONEを利用することで.vimrcを読み込みません。素のVimで操作が処理されます。

Vim上で使えるコマンドを実行する(vim -c)

vim -cによって、vimのコマンドが実行できます。normal! <command>でノーマルモードで続く<command>を受け付けます。

ggはカーソルをバッファの先頭に移動します。

=G=がインデント調整、Gがモーションです。=Gによって、カーソル位置から、バッファの末尾までインデントが行われます。

最後にwq!を実行し、保存してVimを終了します。

参考資料

7
5
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
5