複数の窓を思い通りに操作する

画面分割を極めるためのコマンド

機能概要

画面を分割して利用すれば 複数のファイルを同時に編集する時に便利です
また,ひとつのファイルの別々の場所を複数の画面に分割して眺めることも可能です

ここでは窓の開け閉めや 場所や大きさをコントロールするための コマンドを紹介します

最初から複数の窓で起動

JVim起動時から複数の窓を開けたい場合は

jvim -o4 file1 file2

とします. この例だと窓を四分割して, 上から順番に file1,file2の 内容が読み込まれた状態で起動します

jvim -o file1 file2

のように数字を書かなければ できるだけ指定されたファイルの個数だけの窓を 分割しようとして起動します

新規に窓を作る

空っぽの状態の窓を新規に画面分割させて作るには

CTRL-W n

とします. n は大文字でも小文字でもかまいません

CTRL-W20 n

とすれば 新しく作られる窓の行数が20行の状態で分割されます
:new :20new としても全く同じです

別の窓へ移動

窓が複数できたら,当然窓から窓へとカーソル(つまりは編集対象)を移動で きなければ使いものになりませんよね

まず一番重要なのは

CTRL-W j

CTRL-W k

コントロールW を押した直後に カーソル移動でおなじみの j k と いう覚えやすい操作で 上や下の窓に移動できます. 普段そんなにたくさんの窓分割をしないという のであれば 移動はこのコマンドだけ知っていれば困ることはそんなに無いです
ちなみに j k はコントロール押しっぱなしのままでも大丈夫です

他には

CTRL-W w

ひとつ下の窓に移動しますが,すでに一番下にいる時は一番上に移動できます

CTRL-W p

直前にいた窓に戻ります

ひとつのファイルを画面分割

同じファイル内の別々の場所を同時に表示や編集ができるように分割するには

CTRL-W s

とします. "s"は大文字でも小文字でもかまいません

CTRL-W20 s

とすれば 新しく作られる窓の行数が20行の状態で分割されます
:split , 略して :sp :20sp としても全く同じです

ファイル名を指定して画面を分割

何かファイルを新しい窓を作って編集したければ

:new filename

とします

:20new filename

とすれば 新しく作られる窓の行数が20行の状態で分割されます
:sp filename :20sp filename としても全く同じです

ファイルリスト中のファイルを窓で編集

起動時や起動後にすでに指定され, :files のリスト中に存在しているファイルの編集 を 新しい窓で行うには

:new #4

とすれば ファイルリストの 4番のファイルを新しい窓で編集できます

:20new #4

とすれば 新しく作られる窓の行数が20行の状態で分割されます
:sp #4 :20sp #4 としても全く同じです

窓の大きさをコントロール

すでにいくつかの窓に分割されている場合に

CTRL-W =

とすると すべての窓が(大体)同じ行数になります

現在カーソルのある窓の大きさを変化させたい場合は
CTRL-W - で 一行分小さく
CTRL-W + で 一行分大きくなります
CTRL-W 8- CTRL-W 8+ のようにすれば 一気に拡大や縮小したい行数を指定できます

現在カーソルの窓の大きさを直接行数で指定したい場合は

CTRL-W 20_

とします
数値を書かずに

CTRL-W _

とすると 現在の窓の大きさをできるだけ広くなるようにして,他の窓は できるだけ小さくされます

カーソルを窓に移動させたら最低限確保させたい行数を winheight オプションで 設定できます. 設定ファイルなどに

set winheight=10

などという行を書いておけば カーソルが窓に入る時に 10行よりも狭かった場合は 勝手に10行分まで確保しようとします
狭い画面を分割して使いたい場合は便利だと思います

窓を片付ける基本コマンド

カーソルのある窓を片付けたい場合は

CONT-W c

で,カーソルのある窓だけ残したい場合は

CONT-W o

です. 詳しくは,以下で書きます

編集を終了して窓を閉じる

CTRL-W q

で 編集中のファイルを閉じて,同時に窓も閉じます. ファイルがセーブされていない場合は失敗します
:quit とか :q としても全く同じです
また, :quit! :q! とすると, 変更中であってもこれを捨てて ファイルと窓を閉じようとします. ちなみに窓がひとつだけ(つまり分割していない)時には このコマンドは非常に危険なのでお勧めしません. なぜなら 窓がひとつだけの状態で :q! すると変更中のファイルが隠されていてもJVimが終了されるからです
hidden オプションが設定されている人は要注意 !

編集を終らずに窓だけを閉じて隠す

CTRL-W c

で 編集中のファイルは閉じずに,窓だけを閉じます
:close も全く同じです. 画面が分割されていない時はこのコマンドは使えません
今まで編集中だったファイルは隠されて見えなくなります
また編集に戻りたくなったら :files コマンドでファイルについている番号を確認してから (番号)CTRL-^ , :e #(番号) , :sp #(番号) , :new #(番号) などのコマンドで編集に復帰できます

カーソルのある窓だけの状態にして 他は隠す

CTRL-W o

で 現在カーソルのある窓だけが表示される状態になり, 見えていた他の窓は すべて隠された状態になります. つまり 今いる窓以外のすべての窓で :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 として数えた番号を指定します

一気にすべてのファイルを表示

:ba

画面を分割して,ファイルリストに存在しているすべてのファイルを表示状態 にします. 今まで読み込まれていなかったファイル内容もとにかく全部読み込んで 編集状態にしようとします. 略さずに書いて :ball も同様です

:unh

窓を分割して ファイルリスト中で内容が読み込まれているファイルを すべて表示状態にします. すでに編集を終ってしまったファイルや まだ一度も読み込んでいないファイルは対象とならないので :ball よりは 使いやすいと思います. 略さずに書いて :unhide も同様です

複数の窓を出している状態でJVimを終了させるには

窓分割をしているということは,複数のファイルを同時に読み書きしている時の 知識も必要になってきます. 基本的には :qa と打つと終了しますが, 変更中(セーブされていない)ファイルがひとつでもあると このコマンドは失敗します

個別にファイルを選んでセーブしたり,変更内容を捨てたりする場合の操作に ついては別文章「複数ファイルの同時扱い」で詳しく解説しています


前項目, 「複数ファイルを同時に扱うには」へ

目次へ

次項目, 「名前つきバッファと履歴バッファ」へ