Vimでウィンドウスプリット


アニメ『ワンパンマン』(2015)
どんな敵でも一発で倒してしまうヒーロー、サイタマのお話。タイトルが『アンパンマン』に似ていますが、子供向けではありません。「ばいきんまん」っぽい「ワクチンマン」って怪物も登場しますがなんかキモいです。サイタマの他にもいろんなヒーローがわんさか出てきて、怪物と戦うのですが、ヒーロー達が束になっても倒せなかった怪物をサイタマはパンチ一発で倒すところが爽快過ぎて笑えます。

マクロスのような宇宙船に乗ってきた宇宙人がやたら強かったです。切っても切っても復活します。分裂したり統合したり、自由自在宇宙人でした。この宇宙人とサイタマは戦わなかったのですが、戦っていたらやはり、ワンパンチだったのでしょうか。気になります。

Vimのウィンドウも分裂、というか分割できます。いくらでも分割できますが、あまり分割しても頭が追いつかないので、私が使うのはせいぜい3分割です。
では、Vimのスプリットウィンドウを使ってみます。まずはファイルを複数生成から。

~$ ls
~$ seq 300 | split -dl100

スプリットした状態で開くには、-o(横スプリット) -O(縦スプリット)オプションを指定します。今回は-Oで縦スプリットします。

~$ vim -O *

vim-010
ウィンドウが縦に3分割されました(左からファイルx00,x01,x02のバッファ)。

ウィンドウ間のカーソル移動は、(Ctrl-w)を2回押します。
下図のようにを入力する度に、順にカーソルがウィンドウ間を移動します。最後のウィンドウ(一番右)の次は、最初のウィンドウ(一番左)に戻ります。
vim-017

デフォルトのキー操作では、CTRLキーとWキーを2回、計3ストロークも必要なので、キー入力が面倒です。私はmapで他キーに割り当てています。

:map <tab> <C-W><C-W>

vim-018
1ストロークでウィンドウ移動できるのは非常に楽です。

一番左(ファイルx00)のウィンドウに戻って、ウィンドウ内でカーソル移動してみます。
50jで50行下に移動します。
vim-011

一番左(ファイルx00)のウィンドウだけスクロールしました。
他ウィンドウも一緒にスクロールするにはどうすればよいでしょう。ggと入力して、カーソルをもう一度バッファの先頭に戻したら、次は全ウィンドウにスクロールバインド設定しましょう。全ウィンドウにコマンドを送るには、:windoを使います。

:windo set scb

vim-013
:windoを実行すると、カーソルは一番最後のウィンドウに移動しますが、気にせず50行下(50j)に移動してみましょう。
vim-014
全ウィンドウが同時にスクロールしました。
スクロールバインドを解除するには、:set noscbを使います。同じように:windoで全ウィンドウに適用します。

:windo set noscb

vim-015

ggを入力してバッファの先頭に戻しましょう。バインド解除されていますので、一番右のウィンドウだけバッファの先頭にカーソルが移動しましたね。
vim-016

コメント

タイトルとURLをコピーしました