SOFTELメモ

Softel Inc.

【vim】複数ファイルを開く

問題

viで、複数のファイルを開いて編集したい。

タブ方式のテキストエディタみたいな感じで!

答え

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

$ vi a.txt b.txt c.txt
$ vi *.txt

viを起動したところから複数ファイルを開いた状態にしたいときは、:argsコマンドを使う。

:args b.txt c.txt
:args *.txt

開くと、ぱっと見は単一ファイルを開いたときと変わらないが、ファイル切り替えのコマンドでファイルを切り替えられる。複数ファイルの切り替えは 次へ → :n, 前へ → :prev などのコマンドでおこなう。

ファイルを切り替えて、コピー(ヤンク)して、別のファイルに切り替えて貼り付けなどの操作ができる、

ファイルを切り替えるとき、保存していないと警告されるので、複数並べて編集中にしたいときは :vsコマンドなどがよいかもしれない。

複数ファイルを指定して起動

$vim filename filename …
指定したファイルをすべて開いてVimを起動
:next
次のファイルを編集する。:n でも可。現在のファイルが編集中ならエラーになる。
:next!
現在のファイルが編集中でも強制的に次のファイルを編集する
:wnext
現在のファイルを保存して次のファイルへ。 :wn でも可。
:args
指定したファイルと現在のファイルを確認できる
:previous
:nextと逆方向にファイルを開く。:prev でも可。
現在のファイルが編集中ならエラーになる。
強制的に移動するときは :previous!
:wprevious
現在のファイルを保存して前のファイルへ。:wp でも可。
:last
最後尾のファイルへ。:la でも可。
:first
最初のファイルへ。:fir でも可。
CTRL-^
直近の2つのファイルを交互に開くことができる

自動保存

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

起動中のVimから複数ファイルを開く

:args a.txt b.txt c.txt
指定したファイルを開く。
ワイルドカードを使うこともできる :args *.c

他のファイルを開く

:edit filename
ファイルを開く。:e filename でも可。ファイル名を指定しない場合、カレントファイルを開き直す。カレントファイルが編集中の時はエラーになる。
:edit! filename
:e! filename でも可。カレントファイルが編集中でも強制的に開く。

関連するメモ

コメント