複数ファイルを同時に扱うには

たくさんのファイルを開いている時のコマンド

機能概要

標準Viは 複数のファイルの扱いが難しく,機能も弱かったと思う人が多かったのでは ないかと思いますが, JVimでは非常に強力な機能と使いやすさを持っています. JVimの起動時に

jvim file1 file2 file3

…や jvim *.txt …のようにして起動すれば 最初から複数のファイルを指定された 状態で編集を開始できます

また, -o オプションをつけて

jvim -o file1 file2

のように起動すると 指定された複数のファイルを同時に窓を分割して見えるよう な形式で起動できます

また, JVimでは 起動中に他のファイルを開いたりジャンプしたりする機能が 手軽に使えるような機能がありますが 読み込み方については別文章を参照して 下さい. この文章では 複数のファイルを読み込んだ後で,それらをどのようにうまく 扱うのかを解説します

複数のファイルを同時に扱うと 何が便利なのか

まず,ファイルのリストを表示

JVimではファイルが読み込まれたり指定されたりすると かならず通し番号が つけられます. どのファイルが何番で どのような状態になっているのかを表示 させるには

:files

とします. すると例えば次のような表示が出ます

1 #h "/usr/test/example" line 1
2 - "manual.txt" line 0
3 % + "makelist.c" line 1

この例を詳しく説明すると…

まずひとつのファイルについて一行の表示なので 現在 3つのファイルを JVimが 扱っていることがわかります

先頭の数字がファイルの番号です. 起動から終了までの間, この数字は どんな操作をしても変わることはありません . ファイルにつけた背番号みたいな ものだと思って下さい

二文字目は…以下のような意味です
% の印がついているファイルは 現在編集対象となっているファイル です
カーソルがいる編集対象のことです

# の印がついているファイルは 現在の編集ファイルと 交替する対象 となる ファイルです. この印がついているファイルは すぐに現在のファイルと切替える ことができて 他のファイルよりもちょっと便利です
CTRL-^ または :e# といった操作で このファイルと編集中のファイルが 瞬時にして入れ替わります
何の印もなくてスペースが入っているだけの場合は 上のどちらでもないファイルです

三文字目は…以下のような意味です
何の印もない場合 は ファイル内容が読み込まれている通常の状態だという意味です

h の印のファイルは ファイル内容がメモリ内に読み込まれているが 表示はさせてなくって 隠された(hidden)状態にある ことを示しています. h 状態のファイルは 後で セーブするのを忘れないように気を付けましょう

- の印のファイルは ファイル 内容が読み込まれていない状態 だという意味です
起動時にファイル名だけ指定したけども まだ内容を一度も見てない場合とか 過去に編集し終って閉じてしまったファイルなどが この状態になります. 閉じたファイルでも JVimを終了させるまでは ファイル名はこのリストに残るので また編集したくなったら 番号で呼び出すことができるのです

四文字目は…
+ の印のファイルは 現在内容に変更が加えられているが セーブされていない …つまり 変更中 の意味です

そして ファイル名と カーソルの位置が続いて表示されています

2つのファイルの取り扱い

:files コマンドでファイル一覧を表示させてみて,もう一方のファイルの行に # という印が ついているのであれば

CTRL-^

という操作をすれば, 一瞬でそのファイルに切り替わるので, 2つのファイルの間を手軽に 行き来できます

また,どんな場合でも

ファイル番号CTRL-^

という操作で, ファイル番号に対応したファイルに即座に切り替えようとします
ファイルがセーブされていないと編集対象が切替えられない設定にしている場合は 切替える前にファイル内容をセーブしておかないと切替えは失敗します

:set hid

というオプション設定をしておけば 編集中の内容を保ったまま別の画面に切替えることが できます. このようにして編集中なのに表示されていない状態のファイルが 存在することもあるわけで, これは非常に便利なのですが セーブのし忘れの 原因にもなりやすいので :files コマンドの表示をよく見て + 記号があるか どうかの確認をするとか :bmodコマンドを覚えるなどして対処しましょう

たくさんのファイルを自在に扱う

たくさんファイルを同時に開いている場合には :filesコマンドを見ながらの 操作をすることも多いかも知れませんが とりあえずは

(ファイル番号)CTRL-^

とすれば その番号のファイルの編集に切り替わることを知っているだけで困ることもないでしょう

例えば :files の出力を見て,三番のファイルに切り替えたくなったら

3 CTRL-^

または :e#3 という操作でも全く同様に編集を切り替えできます

画面を新しく分割してファイル内容を編集したければ

:new #3

または :sp #3 とします(もちろんファイル番号が3の時の例)

ファイルリストの整理

ファイルリストも多くなると不要な項目は削除したくなりますよね
こんな時は :bdel (番号) というコマンド操作で編集を終わりにして リストからも消すことができます. 例えば 3番のファイルをリストから削除したければ

:bdel 3

で良いのです. 内容が変更中だと失敗するのでセーブしてからにするか, あるいは :bdel! 3 とすれば変更中の内容は捨てて リストからも消去します

なお, 番号を消してもファイル番号は起動中は変化することがない ので 消した番号は欠番となるだけで 前に番号が詰められるわけでは無いので注意

また,多くのファイルを読み込んだ後で 膨大になったファイルリストを片付ける 時には 複数の番号をまとめて ":bdel"できます
たとえば

:bdel 3 4 5 6

とスペースで区切って数字を並べれば 3,4,5,6番のファイルをまとめて消せるし

:1,9bdel

とすれば 1から9番までのファイルをすべて一気に消せます

びっくりマークをつければ変更中であっても捨ててリストから削除できます
たとえば :bdel! 3 4 5 6 とか :1,9bdel! などとします

たくさんのファイルをまとめて次々と閲覧

たとえば JVimを起動する時に

jvim *.txt

などとして 大量のファイルを次々と見たいことってありますよね ? こういう時は 次のファイルの表示に切替える時に
:n または :next と打つだけでリストの次のファイルの表示に切り替わります

ついでに知っておきたいのは

jvim -o *.txt

のように 起動時に -o オプションをつけると できるだけファイルの数だけ 画面を分割して 一度に全部のファイルを表示させた状態で起動しようとします
それでもメモリの制限などで 読み込みできなかった窓も出るかも知れません が, カーソルを移動させれば内容が読み込まれるので大丈夫です

セーブと編集終了関連のコマンド

複数ファイル編集と関連の深そうな ファイルを閉じたり書き戻すコマンドを 適当に重要そうなものを選んで解説します

:q

編集しているファイルを閉じます. 閉じた後の状態は - となり,メモリから内容 が削除されます. 閉じようとする時に変更内容がセーブされていないと 失敗します. 略さずに :quit と打ってもよいです

:q!

変更内容がセーブされていない場合に,変更内容を捨ててファイルを閉じる
画面分割をしていない時に このコマンドを打つと JVimが終了するので 変更中の ファイルをセーブしていない状態で隠している時は要注意 ! 略さずに :quit! としても同様

:wa

変更のあったすべてのファイルを一度に全部セーブする

:wa!

とすれば強制バージョンになる. 略さずに :wall とか :wall! のように書いても同様

:bmod

ファイルリストで 次の変更中のファイルの編集に切替える
終了しようと思った時に 編集中のものをセーブしに行く時に便利

:wqa

すべての変更のあるファイルをセーブしてから JVimを終了させる

:wqa!

は 強制バージョン. 略さずに :wqall :wqall! とも 書ける
また,これの「ファイル一個だけバージョン」の :wq は 良く使ってますよね

終了はせずに とりあえず変更のあったファイルについてセーブだけを まとめてする場合ならば :wa :wa! といったコマンドを使います


前項目, 「希望のファイルを自由自在に開く」へ

目次へ

次項目, 「複数の窓を思い通りに操作する」へ