🌕

【vim】 複数ファイルの操作まとめ

2022/07/25に公開

基本

vimコマンドの引数にファイル名を複数渡して、複数のファイルを開くことができる。

vim a.txt b.txt c.txt

ファイル間の移動は、以下の通り。

コマンド 内容
:n 次のファイルに移動。現在のファイルが編集中ならエラーになる。
:wn 現在のファイルを保存して次のファイルへ。
:next! 現在のファイルが編集中でも強制的に次のファイルを編集する。
:prev :nと逆方向にファイルを開く。
:wp :wnと同じだが、逆方向のファイルを開く。
:previous!! 現在のファイルが編集中でも強制的に次のファイルを編集する。
:fir 最初のファイルへ。
:la 最後尾のファイルへ。
:args 起動中のVimから複数ファイルを開く。たとえば、:args a.txt b.txt c.txt。そして:args *.cのようにワイルドカードを使うこともできる

:nprevでは、ファイルを移動するさいに、編集中の場合はエラーになってしまう。

そのエラーが面倒であれば、自動保存を設定すれば楽だ。

コマンド 内容
:set autowrite ファイルを移動する際に自動で保存するように設定。
:set noautowrite 自動保存を解除する

タブページを使う

上記の基本コマンドでは、複数のファイルがあったときに、自分が見たいファイルが何個先にあるのかが視覚的にわからない。

そんな問題を解決するのがタブページだ。

-pを加えるだけでよい。

vim -p a.txt b.txt c.txt

ファイル間の移動はgtキーで次のファイル、gTキーで一個前のファイルに移動することができる。(おそらくGo Toの略)

分割して開く

複数のファイルを同時に開き、見比べながら作業したい場合もあるだろう。

tmuxのように、画面を分割して、複数のファイルを同時に開くコマンドがvimにも搭載されている。

-oを指定した場合は水平にファイルを分割して開くことができる。

$ vim -o hoge.c hoge1.c

-Oであれば垂直に分割してファイルを開くことが可能。

$ vim -O hoge.c hoge1.c

この場合のファイル間の移動は、Ctrl + w + w キーで行うことができる。
(つまりwキーを2回押す)

すでに1つのファイルを開いている場合は、以下のコマンドで、画面を分割することができ、上の基本で紹介した:argsコマンドで、別のファイルを開くことができる。

コマンド 内容
:split (:sp) ウィンドウを上下に分割。
:vsplit (:vs) ウィンドウを左右に分割。

この場合のファイル間の移動も、Ctrl + w + w キーで行うことができる。
(つまりwキーを2回押す)

タブページや分割ウィンドウを一度に閉じる

すべて閉じる

:qa

saveしてすべて閉じる

:wqa

分割して差分をみる

2つのファイルの差分を見る場合は-dをつけくわえればいい。

$ vim -d hoge.c hoge1.c

Discussion