この記事では、Vim / neovim でプラグインを使わずに「タブの開閉や切り替え」のコマンドを紹介します。
Vimの基本的なタブ操作
新規にタブを開く
通常はこちらのコマンドでタブを開きます。
:tabnew
:tabedit
:tabe
使う機会はさほど無いような気がしますが、次のようなコマンドも用意されています。
:+tabnew (
:-tabnew
:0tabnew
:2tabnew (
:$tabnew
:tabedit {file}
:tab terminal
:tab :put =execute('messages')
開いているタブを閉じる
通常タブを閉じるときは、次のコマンドを実行します。
:tabclose
この時に開いていたバッファは、隠しバッファとして残ります。タブと一緒にはバッファが閉じる(終了する)わけではないので、動作の違いに注意しましょう。
開いているウインドウが、現在のタブで最後の一つだとしたら次のコマンドでも閉じることができます。
:q
:q! (保存していなくても強制的に閉じる)
Ctrl-w Ctrl-q
Ctrl-w q
こちらもバッファが閉じる(終了する)わけではありません。あくまで見かけ上でタブが閉じる、つまり見えなくなるだけです。
ちなみに :qa! コマンドを実行してしまうと、タブやバッファの状態に関係なく閉じてしまうので注意が必要です。
次のタブに切り替える
:tabNext
前のタブに切り替える
:tabPrevious
タブ一覧の表示
:tabs
マウスを使わないならバッファとどちらを使うかは迷いますが、これらを Webブラウザと同じようなキー操作で扱えるようにできると便利です。
タブのショートカットキーをWebブラウザに合わせる
タブを主要な Web ブラウザ と同じ操作で使えるようにします。まず ~/.vimrc (%USERPROFILE%_vimrc) を新規作成 もしくは 下記を追記します。
" タブ(タブページ)をWebブラウザ風に操作するキーバインド(ショートカットキー)
nnoremap <C-t> :tabnew<cr> "C-t で新規タブを開く
nnoremap <C-w> :tabclose "C-w でタブを閉じる
nnoremap <C-tab> :tabnext<cr> "C-tab で1つ右のタブを開く
nnoremap <C-S-tab> :tabprevious<cr> "Ctrl-Shift-tab で1つ左のタブを開く
※下記に :tabclose の割り当てを辞めまたことを書いています。
少なくとも、この4つのキーバインド(ショートカットキー)が登録できれば、操作に困らないと個人的には思いますが、どうでしょうか?
キーマッピングを見直しました。
"nnoremap <C-w> :tabclose
nnoremap <C-F4> :bdelete<cr>
その代わり、Ctrl-F4 に :bdelete 、つまりはバッファを閉じる操作に変更しました。
タブに操作を実行する(一括処理)
全タブでコマンドを実行するには tabdo コマンドを使います。
:tabdo コマンド
意外と使えるかもしれないような、使えないかもしれないような、という機能です。最も使えそうなのは「全タブの文字を置換する」機能です。
全タブの文字を置換する
:tabdo %s/検索語/置換語/gi
全タブのカーソル位置に特定のファイルを読み込む(挿入する)
:tab read ファイルパス
全タブを再読み込み
:tab e!
正直、一括処理が必要な場面はさほど多くはありませんが、ごくたまに使いたくなったときに思い出せるようにしましょう。
バッファをタブに変換する
:bufdo tab split
または
:tab ba
今バッファに何が開いているか確認するには便利です。しかし、バッファを閉じるには結局 :bdelete で行う必要があります。