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!'
解説
簡単な解説を載せます。より詳しく知りたい人は、vim -h
やhelp - Vim日本語ドキュメント、以下の参考リンクを見ると良いでしょう。
Vimの起動オプション
-N
でVi非互換にし、-i NONE
でviminfoを汚さないようにします。また、-u NONE
を利用することで.vimrc
を読み込みません。素のVimで操作が処理されます。
Vim上で使えるコマンドを実行する(vim -c
)
vim -c
によって、vimのコマンドが実行できます。normal! <command>
でノーマルモードで続く<command>
を受け付けます。
gg
はカーソルをバッファの先頭に移動します。
=G
は=
がインデント調整、G
がモーションです。=G
によって、カーソル位置から、バッファの末尾までインデントが行われます。
最後にwq!
を実行し、保存してVimを終了します。