Help us understand the problem. What is going on with this article?

Vimの:tabsからfzfで検索してタブを開く

More than 1 year has passed since last update.

まえがき

ザクッと作ってみたので共有します。
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 call s:FZFTabOpenFunc()

function! s:FZFTabOpenFunc()
    call fzf#run({
            \ 'source':  s:GetTabList(),
            \ 'sink':    function('s:TabListSink'),
            \ 'options': '-m -x +s',
            \ 'down':    '40%'})
endfunction

function! s:GetTabList()
    let s:tabList = execute('tabs')
    let s:textList = []
    for tabText  in split(s:tabList, '\n')
        let s:tabPageText = matchstr(tabText, '^Tab page')
        if !empty(s:tabPageText)
            let s:pageNum = matchstr(tabText, '[0-9]*$')
        else 
            let s:textList = add(s:textList, printf('%d %s',
                \ s:pageNum,
                \ tabText,
                \   ))
        endif
    endfor
    return s:textList
endfunction

function! s:TabListSink(line)
    let parts = split(a:line, '\s')
    execute 'normal ' . parts[0] . 'gt' 
endfunction

実行イメージ

スクリーンショット 2018-04-03 21.03.53 1.png

あとがき

:tabs コマンドと同じように現在開いているものには> が付いたりもします。(基本的に:tabs のファイル名の行をそのまま出力します)
一つのタブの中で複数のbufferを開いている場合もすべて列挙し、左の数字がどのタブ番号かを教えてくれます。

最近OniVimを使っていて、一つのVimを開きっぱなしにしていることが多くなったので開きっぱなしのタブも増えてきた…ということで組んでみました。
OniVimについてはまた今度まとめます。

kamykn
Web系サーバーサイド&フロントエンドエンジニアとして働いています。 過去にはソシャゲ系のサーバーサイドとしても働いていました。 英語を強めていきたい。
https://kamykn.github.io/
yahoo-japan-corp
Yahoo! JAPAN を運営しています。
https://www.yahoo.co.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした