Vimperatorで「大体ここらへん」でタブを切り替える
タブを切り替える際に、:bufferコマンドから絞り込んだりしてもいいのですが、切り替えたい先のタブのタブバー上での位置が分かっている場合、:bufferコマンドの一覧から探したり絞り込みをするのは面倒です。
そこで、タブバー上の並びにおける相対的な位置を指定してタブを切り替えるキーマップ定義を作成してみました。このキーマップで大体目当てのタブがある位置に移動して、そこから手動でタブ移動をする使い方を想定しています。
liberator.modules.mappings.addUserMap( [liberator.modules.modes.NORMAL], ["<C-f>"], "Fuzzy Tab Switch", function(argument){ tab_length = liberator.modules.tabs.count; if(isNaN(input = parseInt(argument))){ switch(argument){ case "a": input = 1; break; case "s": input = 2; break; case "d": input = 3; break; case "f": input = 4; break; case "g": input = 5; break; case "h": input = 6; break; case "j": input = 7; break; case "k": input = 8; break; case "l": input = 9; break; case ";": input = 0; break; defalut: liberator.echoerr("Invalid input."); return; } } if(input == 0) input = 10; fuzzy_tab_index = Math.round(tab_length * input / 10); liberator.modules.tabs.select(fuzzy_tab_index -1); }, { flags: liberator.modules.Mappings.flags.ARGUMENT } );
指定のキーの後に入れた数値に応じた位置にあるタブに切り替えます。たとえば、
数字の代わりにasdfghjkl;で入力することもできます。もちろん1-9,0に対応します。