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などで,画面の見比べなどに活用していきたい。
