画面を分割して利用すれば 複数のファイルを同時に編集する時に便利です
また,ひとつのファイルの別々の場所を複数の画面に分割して眺めることも可能です
ここでは窓の開け閉めや 場所や大きさをコントロールするための
コマンドを紹介します
JVim起動時から複数の窓を開けたい場合は
jvim -o4 file1 file2
とします. この例だと窓を四分割して, 上から順番に file1,file2の
内容が読み込まれた状態で起動します
のように数字を書かなければ できるだけ指定されたファイルの個数だけの窓を
分割しようとして起動します
空っぽの状態の窓を新規に画面分割させて作るには
CTRL-W nとします. n は大文字でも小文字でもかまいません
CTRL-W20 n
とすれば 新しく作られる窓の行数が20行の状態で分割されます
:new や :20new としても全く同じです
窓が複数できたら,当然窓から窓へとカーソル(つまりは編集対象)を移動で
きなければ使いものになりませんよね
まず一番重要なのは
CTRL-W jCTRL-W k
コントロールW を押した直後に カーソル移動でおなじみの j や k と
いう覚えやすい操作で 上や下の窓に移動できます. 普段そんなにたくさんの窓分割をしないという
のであれば 移動はこのコマンドだけ知っていれば困ることはそんなに無いです
ちなみに j や k はコントロール押しっぱなしのままでも大丈夫です
他には
CTRL-W w
ひとつ下の窓に移動しますが,すでに一番下にいる時は一番上に移動できます
直前にいた窓に戻ります
同じファイル内の別々の場所を同時に表示や編集ができるように分割するには
CTRL-W sとします. "s"は大文字でも小文字でもかまいません
CTRL-W20 s
とすれば 新しく作られる窓の行数が20行の状態で分割されます
:split , 略して :sp や :20sp としても全く同じです
何かファイルを新しい窓を作って編集したければ
:new filename
とします
とすれば 新しく作られる窓の行数が20行の状態で分割されます
:sp filename や :20sp filename としても全く同じです
起動時や起動後にすでに指定され, :files のリスト中に存在しているファイルの編集 を 新しい窓で行うには
:new #4
とすれば ファイルリストの 4番のファイルを新しい窓で編集できます
とすれば 新しく作られる窓の行数が20行の状態で分割されます
:sp #4 や :20sp #4 としても全く同じです
すでにいくつかの窓に分割されている場合に
CTRL-W =
とすると すべての窓が(大体)同じ行数になります
現在カーソルのある窓の大きさを変化させたい場合は
CTRL-W - で 一行分小さく
CTRL-W + で 一行分大きくなります
CTRL-W 8- や CTRL-W 8+ のようにすれば
一気に拡大や縮小したい行数を指定できます
現在カーソルの窓の大きさを直接行数で指定したい場合は
CTRL-W 20_
とします
数値を書かずに
とすると 現在の窓の大きさをできるだけ広くなるようにして,他の窓は
できるだけ小さくされます
カーソルを窓に移動させたら最低限確保させたい行数を winheight オプションで 設定できます. 設定ファイルなどに
set winheight=10
などという行を書いておけば カーソルが窓に入る時に 10行よりも狭かった場合は
勝手に10行分まで確保しようとします
狭い画面を分割して使いたい場合は便利だと思います
カーソルのある窓を片付けたい場合は
CONT-W cで,カーソルのある窓だけ残したい場合は
CONT-W o
です. 詳しくは,以下で書きます
で 編集中のファイルを閉じて,同時に窓も閉じます. ファイルがセーブされていない場合は失敗します
:quit とか :q としても全く同じです
また, :quit! や :q! とすると, 変更中であってもこれを捨てて
ファイルと窓を閉じようとします. ちなみに窓がひとつだけ(つまり分割していない)時には
このコマンドは非常に危険なのでお勧めしません. なぜなら 窓がひとつだけの状態で
:q! すると変更中のファイルが隠されていてもJVimが終了されるからです
hidden オプションが設定されている人は要注意 !
で 編集中のファイルは閉じずに,窓だけを閉じます
:close も全く同じです. 画面が分割されていない時はこのコマンドは使えません
今まで編集中だったファイルは隠されて見えなくなります
また編集に戻りたくなったら :files コマンドでファイルについている番号を確認してから
(番号)CTRL-^ , :e #(番号) , :sp #(番号) , :new #(番号) などのコマンドで編集に復帰できます
で 現在カーソルのある窓だけが表示される状態になり, 見えていた他の窓は
すべて隠された状態になります. つまり 今いる窓以外のすべての窓で :close したことと
同等の効果です. 窓が多くて邪魔に感じて来たら使いたくなるコマンドですね
:only としても全く同じです
隠されたファイルなどの状況は :files コマンドで確認しましょう
CTRL-W r または CTRL-W CTRL-R で, ひとつ下の窓と
場所が入れ替わります
大文字の R にして CTRL-W R だと,逆に上の窓と場所が入れ替わります
CTRL-W x または CTRL-W CTRL-X で, ひとつ下の窓との
入れ換え, すでに一番下ならばひとつ上との入れ換えです
CTRL-W 3x のように数字をつけると 上から 3番目の窓と
場所を入れ換えます. 一番上の窓の番号を 1 として数えた番号を指定します
画面を分割して,ファイルリストに存在しているすべてのファイルを表示状態
にします. 今まで読み込まれていなかったファイル内容もとにかく全部読み込んで
編集状態にしようとします. 略さずに書いて :ball も同様です
窓を分割して ファイルリスト中で内容が読み込まれているファイルを
すべて表示状態にします. すでに編集を終ってしまったファイルや
まだ一度も読み込んでいないファイルは対象とならないので :ball よりは
使いやすいと思います. 略さずに書いて :unhide も同様です
窓分割をしているということは,複数のファイルを同時に読み書きしている時の
知識も必要になってきます. 基本的には :qa と打つと終了しますが,
変更中(セーブされていない)ファイルがひとつでもあると このコマンドは失敗します
個別にファイルを選んでセーブしたり,変更内容を捨てたりする場合の操作に
ついては別文章「複数ファイルの同時扱い」で詳しく解説しています