0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

tabeで開いているファイルはそのタブにジャンプする

Posted at

tabeで開いているファイルはそのタブにジャンプする

こんな感じで,どんどん同じファイルが別タブで増えるのが嫌だったけど情報か見つからなかったので, vimrcを書きました
image.png

中身

これを$MYVIMRCにコピペすればtabeでできるはず

command! -nargs=1 -complete=file Tabe call MyTabEdit(<f-args>)
function! MyTabEdit(...) abort
    let l:sbuf = &switchbuf
    if bufexists(a:1)
        let l:bufnr = bufnr(a:1)
        if l:bufnr is bufnr("%")
            " いま開いているなら何もしない
            return 
        endif
        for i in range(tabpagenr('$'))
            let l:bufs = tabpagebuflist(i+1)
            for j in l:bufs
                if j is l:bufnr
                    " 別タブで開いているならsbufferで飛ぶ
                    set switchbuf=usetab
                    execute "sbuffer" j
                    let &switchbuf = l:sbuf
                    return 
                endif
            endfor
        endfor
        " 見えていないバッファなら, 別タブで開く
        execute "tab split" a:1

    else
        " バッファがなければ開く
        execute "tabe" a:1
    endif
endfunction


cnoremap tabe Tabe
cnoremap tabedit tabedit

  • command! ...
    :TabeでMyTabEdit関数を呼び出せるようにコマンド登録する. -complete=file を入れとくとtabキーでファイル補完ができるらしい

  • MyTabEdit
    コメントにあるとおり.
    別タブで開く時は, switchbuf=usetabにして, sbufferでバッファを開くようにしている.

  • cnoremap ...
    :tabeと入力したときに:Tabeと自動で変換する
    同様に:tabeditと入力したときは:Tabeditとならないように, :tabeditと変換する.

その他

変数の展開の仕方から, 関数の作成, 実行方法まで何もかもわからなかった.
勉強しながらかいたのでもっといい方法あるのかも...
ご存知でしたらおしえてください

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?