🌕
【vim】 複数ファイルの操作まとめ
基本
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 のようにワイルドカードを使うこともできる |
:n
やprev
では、ファイルを移動するさいに、編集中の場合はエラーになってしまう。
そのエラーが面倒であれば、自動保存を設定すれば楽だ。
コマンド | 内容 |
---|---|
: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