この記事では、Vim / neovim でプラグインを使わずに「ウインドウを分割する」ためのキーバインドとコマンドについて、ご紹介します。
[解答] 4種類
考え方は色々ありますが、大まかに分けると次の4種類になります。
- カレントウインドウ(カーソルがあるウインドウ)を水平分割する
- カレントウインドウを垂直分割する
- 新しいウインドウ(バッファ)を水平分割で開く
- 新しいウインドウを垂直分割で開く
それぞれがキーバインドでもコマンドでも実現できます。
Vimウインドウ分割1. カレントウインドウを水平分割する
(ノーマルモード) Ctrl-w s Ctrl-w Ctrl-s Ctrl-w Ctrl-S :split :sp
5種類もあり、キーバインドが3種類、コマンドが2種類です。
コマンドであれば、ウインドウサイズやオプションを指定したりすることも可能です。
個人的には、Ctrl-w Ctrl-s がよく使いますね。
Vimウインドウ分割2. 新しいウインドウを垂直分割する
(ノーマルモード) Ctrl-w v Ctrl-w Ctrl-v Ctrl-w Ctrl-V :vsplit :vs
こちらも5種類もあり、キーバインドが3種類、コマンドが2種類です。
同じくコマンドであれば、ウインドウサイズやオプションを指定したりすることも可能です。
個人的には、Ctrl-w Ctrl-v がよく使いますね。
Vimウインドウ分割3. 新しいウインドウを水平分割する
(ノーマルモード) Ctrl-w n Ctrl-w Ctrl-n Ctrl-w Ctrl-N :new
こちらは4種類で、キーバインドが3種類、コマンドが1種類です。
やはりこちらもコマンドであれば、ウインドウサイズやオプションを指定したりすることも可能です。
やっぱり個人的には、Ctrl-w Ctrl-n がよく使いますね。
Vimウインドウ分割4. 新しいウインドウを垂直分割する
(ノーマルモード) :vnew :vne
こちらはコマンドが2種類で、実質は1種類です。
このコマンドに続けて、ウインドウサイズやオプションを指定したりすることも可能です。
解説
ウインドウ分割は、Vim / neovim を使う上で非常によく利用する機能の一つです。水平垂直それぞれで自由自在に分割できると、利便性の高い画面構成で作業をすることができます。
また、コマンドで分割する場合のオプションを覚えておくと、何ステップかの手順が削減できる一方、色々ありすぎて学習コストが高いのが難点です。
慌てず、この記事のように一つずつ覚えて徐々にバリエーションを増やしていきましょう。
このVimコマンドの補足情報
- 利用頻度
- 便利さ
- 覚え易さ
関連するVimヘルプ
Vim のヘルプでは下記のように解説されています。
CTRL-W s CTRL-W_s
CTRL-W S CTRL-W_S
CTRL-W CTRL-S CTRL-W_CTRL-S
:[N]sp[lit] [++opt] [+cmd] [file] :sp:split
カレントウィンドウを2つに分割する。その結果、2つの表示領域に同
じファイルが表示されるようになる。
新しいウィンドウの高さはNになる(デフォルトの高さはカレントウィ
ンドウの高さの半分)。新しいウィンドウの場所を確保するため、カ
レントウィンドウの高さは低くなる(‘equalalways’ オプションが
セットされていて、かつ ‘eadirection’ の値が “hor” でない場合、
他のウィンドウの中でカレントウィンドウか新しいウィンドウより大
きいものがあれば、そのウィンドウも小さくなる)。[file] が与えられている場合は新しいウィンドウで編集される。ど
のバッファでもロードされていない場合、読み込まれる。そうでなれ
ければ新しいウィンドウは既にロードされたバッファを使用する。Note: CTRL-S は端末によっては使用できない。また、それ以上の入
力をブロックしてしまうかもしれない。続けるためにはCTRL-Qを使う
こと。
++optと+cmd も参照のこと。
E242
自動コマンドでウィンドウを分割するときは注意すること。他のウィ
ンドウレイアウトを変更しているときにウィンドウレイアウトが混乱
する場合がある。CTRL-W CTRL-V CTRL-W_CTRL-V
CTRL-W v CTRL-W_v
:[N]vs[plit] [++opt] [+cmd] [file] :vs:vsplit
:splitと同様、ただし垂直分割する。次のすべてに当てはまる場合、
ウィンドウは水平に広げられる:
1. 幅が指定されていない。
2. ‘equalalways’ がセットされている。
3. ‘eadirection’ が “ver” でない。
4. 他のウィンドウの中でカレントウィンドウか新しいウィンドウよ
り幅が広いものがある。
Note: 他の局面ではCTRL-QはCTRL-Vと同じだが、ここではそうでな
い。CTRL-W n CTRL-W_n
CTRL-W CTRL_N CTRL-W_CTRL-N
:[N]new [++opt] [+cmd] :new
新しいウィンドウを作成して空のファイルの編集が始まる。新しい
ウィンドウの高さはNになる(デフォルトの高さはカレントウィンドウ
の高さの半分)。新しいウィンドウの場所を確保するため、カレント
ウィンドウの高さは低くなる。(‘equalalways’ オプションがセット
されていてかつ ‘equalalways’ オプションが “hor” でない場合、他
のウィンドウの高さも低くなる)。++optと +cmd も参照のこと。
‘fileformats’ オプションが空でない場合は、与えられた最初の
フォーマットが新しいバッファにも使用される。
‘fileformats’ オプションが空の場合は、カレントバッファの
‘fileformat’ が使用される。これは引数++optによって上書きされ
うる。
自動コマンドはこの順で実行される:
1. カレントウィンドウに対する WinLeave
2. 新しいウィンドウに対する WinEnter
3. カレントバッファに対する BufLeave
4. 新しいバッファに対する BufEnter
この動作は、はじめに “:split”、次に “:enew” コマンドを実行した
場合と同じ動作である。:[N]vne[w] [++opt] [+cmd] [file] :vne:vnew
windows – Vim日本語ドキュメント
:newと同様だが、垂直分割する。‘equalalways’ がセットされ、
‘eadirection’ が “ver” でないならば、幅が指定されない限りウィ
ンドウは水平に広げられる。
こちらは、Vim上では下記のコマンドでヘルプを確認できます。
:help CTRL-W_s :help CTRL-W_S :help CTRL-W_CTRL-S :help :sp :help :split :help CTRL-W_CTRL-V :help CTRL-W_v :help :vs :help :vsplit :help CTRL-W_n :help CTRL-W_CTRL-N :help :new :help :vne :help :vnew
ヘルプで検索するときは、通常は大文字小文字は識別されませんので、どちらでも構いません。
Vim関連の参考書籍
こちらの書籍が参考になります。
Vim/neovim関連の書籍で、もっとも評判が良くてバイブルと呼んでる人もいる一冊です。Vim/neovimのバージョンに依存しない沢山のTips形式で、その表題通りに「思考のスピードで編集」できるようになるノウハウが詰まっています。その高い評価は Amazon のレビューからも分かる通りです。Vimmer なら必ず一度は読んでおいて間違いありません。
こちらもVim関連の書籍で評価が高い書籍の一冊です。vim-jpで見かける上級Vimmer(Vimサポーターズ)の皆様による、Vimを実践で使ったノウハウからプラグイン関連の情報が詰まっています。日本の Vim界隈を知る上でも是非一読しておきたい一冊です。
Vim/neovim の設定ファイルやプラグインなど、Vim script に関するノウハウがいくつも詰まった一冊です。日本で Vim Script をここまで深く解説している唯一の書籍と言えます。Vim力を伸ばしたいと考えるなら、絶対に避けては通れない書籍でしょう。