Vimで現在画面を複製する3の方法
導入
テキストエディターのVimで作業していると,現在の画面を複製したいことがけっこうある。
例えば,タグジャンプしたり,別のファイルを開くときに,現在の画面も並べてすぐに見比べられるようにする場合だ。
Vimプラグインによっては,専用のコマンドを用意して,上下分割,左右分割,タブページで新しい画面に表示することがある。頻繁に使う場合,手間を減らすために専用コマンドを使うのは有効だ。しかし,たまにしか使わないのにわざわざ専用のコマンドを覚えるのが面倒だ。
そこで,一度現在の画面を分割,タブページなどに複製してから,新しい画面を開く。これにより,どんなタイプのファイルやバッファーの読み込みが発生しても,同じ手順で画面を並べることができる。
具体的には以下の3ステップとなる。
手順がわかれば,これらの3ステップをキーバインドに割り当ててたり,コマンドに割り当てることもできるだろう。
そこで,これらの手順で最初に行い,最も重要な画面の複製方法をまとめる。
方法
現在画面を複製するExコマンドは以下の3種類だ (タブページの利用可能なVim 7.0以降を想定)。
画面複製種類 | コマンド | 短縮形 |
---|---|---|
上下分割 | :split | :sp |
左右分割 | :vsplit | :vsp |
タブページ | :tabedit% or :tabnew% or :tab split | :tabe% or :tab sp |
Vimにはコマンドの短縮形が用意されている。そのため,作業速度を上げるため,通常の作業では短縮形を使うことになる。
おそらく,:split
と:vsplit
による画面の上下分割と左右分割はVim使いの多くが知っているだろう。単に現在画面を分割するだけだが,これだけで現在画面の複製となる。もっとも,バッファーは共有しているので,見た目だけの複製であり,データの複製ではないことに注意する。
しかし,タブページの複製はあまり見慣れない。まず,タブページを開くコマンドには,:tabedit
と:tabnew
の2種類がある。これらは名前が違うだけでまったく同一のコマンドだ。そのため,通常の作業では短縮形の:tabe
を使うことになる。
現在画面のタブページヘの複製のポイントは%
だ。Exコマンドでファイル名が使える場所には特殊文字を使うことができる。%
は現在ファイル名を意味する。そのため,:tabe%
は:tabe現在ファイル名
に展開され,現在画面を新規タブページで開くことができる。
また,タブページの複製には,:tab
コマンドを用いる方法もある。:tab
コマンドは引数にコマンドを指定し,そのコマンドが新規画面を作成する場合に,タブページを作成する。つまり,新規タブページでコマンド実行結果を開く。これを利用して,:tab
コマンドの引数のコマンドに:split
を指定する。これにより,新規タブページに現在画面の分割結果が表示され,結果として現在画面を新規タブページに複製できる。
短縮形を使用すると,:tab sp
となる。文字数自体は,:tabe%
のほうが1文字短いが,%
は入力しにくいので,現在画面の新規タブページへの複製は:tab sp
を使うのがよい。
結論
Vimで現在画面を複製する3種類の方法を解説した。:sp
と:vsp
による画面分割による画面複製は以前から知っていたが,:tabe%
と:tab sp
によるタブページへの複製はつい最近知った。
今後の作業では,これらのコマンドを駆使して,タグジャンプやQuickFixなどで,画面の見比べなどに活用していきたい。