まえがき
ザクッと作ってみたので共有します。
vim8でも、NeoVimでも大丈夫です。
fzfはすでにインストールしてある前提です。
.vimrc
Plug 'junegunn/fzf',{'dir':'~/.fzf','do':'./install --all'}
Plug 'junegunn/fzf.vim'
.vimrc または init.vimに以下を記述
以下を.vimrcまたはinit.vimに書きます
.vimrc
" [tab open] ----------------------------------" 数あるタブから開く" leader to で開始するための設定
nnoremap <leader>to:FZFTabOpen<CR>
command! FZFTabOpen calls:FZFTabOpenFunc()function!s:FZFTabOpenFunc()call fzf#run({ \'source':s:GetTabList(), \'sink':function('s:TabListSink'), \'options':'-m -x +s', \'down':'40%'})endfunctionfunction!s:GetTabList()lets:tabList= execute('tabs')lets:textList=[]for tabText in split(s:tabList,'\n')lets:tabPageText= matchstr(tabText,'^Tab page')if!empty(s:tabPageText)lets:pageNum= matchstr(tabText,'[0-9]*$')elselets:textList= add(s:textList, printf('%d %s', \s:pageNum, \ tabText, \))endifendforreturns:textListendfunctionfunction!s:TabListSink(line)let parts = split(a:line,'\s')
execute 'normal '. parts[0].'gt'endfunction
実行イメージ
あとがき
:tabs
コマンドと同じように現在開いているものには>
が付いたりもします。(基本的に:tabs
のファイル名の行をそのまま出力します)
一つのタブの中で複数のbufferを開いている場合もすべて列挙し、左の数字がどのタブ番号かを教えてくれます。
最近OniVimを使っていて、一つのVimを開きっぱなしにしていることが多くなったので開きっぱなしのタブも増えてきた…ということで組んでみました。
OniVimについてはまた今度まとめます。