Vimで今のウインドウ以外を閉じる方法(Ctrl-w o / :only)
参照用に何枚もウインドウを分割して調べものをした後、最終的に1枚だけ残して集中したくなることがあります。1枚ずつCtrl-w cで閉じていくより、一発で「これ以外全部閉じる」コマンドを使うほうが速く済みます。
| キー | これだけ覚える |
|---|---|
| Ctrl-w o / Ctrl-w Ctrl-o | 今のウインドウ以外を全部閉じる |
:only / :on | 同上(コマンド版) |
:only! | 未保存の変更があっても強制的に閉じる |
:tabonly | 他のタブページを全部閉じる |
キーバインドで実行する
Ctrl-w o
Ctrl-w Ctrl-o
┌──A──┬──B──┐
│ │* │
├──────┴─────┤
│ C │
└─────────────┘
┌─────────────┐
│ * │
│ B │
│ │
└─────────────┘
oは「Only」の頭文字です。Ctrl-w oだとCtrlキーを一度離す必要がありますが、Ctrl-w Ctrl-oならCtrlキーを押しっぱなしのままwとoを押せるので、こちらのほうが手が楽に感じる人も多いです。カウントを指定すると、その数のウインドウだけを残す挙動になります。
コマンドで実行する
:only
:on
コマンドの場合、短縮形の:onを覚えておくと入力が楽になります。
閉じられたウインドウのバッファはどうなるか
他のウインドウが閉じられても、そこで表示していたファイル・バッファ自体が消えるわけではありません。未保存の変更がある場合の挙動は'hidden'オプションの設定次第で変わります。
| 状況 | 結果 |
|---|---|
'hidden'がオン | 変更を保持したまま隠れバッファとして残り、:onlyは成功する |
'hidden'・'autowrite'とも オフ | 編集中のバッファを表示しているウインドウが閉じられず、:only自体が失敗する(うっかり変更を失う心配は少ない) |
この挙動はウインドウを閉じる4つの方法の記事で紹介した:closeと同じ考え方になっています。
強制的に閉じたい場合
:only!
:on!
!を付けると、編集中のバッファがあっても強制的に隠れ状態にして閉じます。バッファの中身自体が削除されるわけではないので、:oldfilesや:lsから後で開き直せます。
タブ単位で他のタブを整理したい場合
:onlyはあくまでカレントタブページ内のウインドウにしか作用しません。複数のタブページ自体を整理したい場合は、代わりに:tabonly(短縮形:tabo)を使います。カレントタブページ以外の全タブページを閉じる、という違いがあります。
:tabonly
:tabo
使いどころ
複数のファイルを参照しながら1つのファイルを編集していて、いよいよ編集に集中したいというタイミングでよく使います。分割を全部個別に閉じるより、:onlyで一気に整理したほうが手数が少なくて済みます。調査用に開いたウインドウが5枚あっても、1コマンドで本来の作業画面に戻れるのが利点です。
複数の参照ファイルを開いて調査した後、結論が出たら:onlyで一気に画面を片付けてから本命のファイルに集中する、という流れが定着しています。閉じたファイルもバッファとして残っているので、必要になったら:lsやoldfilesですぐ呼び戻せて安心して使えます。
まとめ
今のウインドウだけを残したいときはCtrl-w Ctrl-oまたは:on。閉じたウインドウのバッファは消えないので、気軽に使えます。