🌕
【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