Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

vimのすごい便利なのにあまり使われていない「タブページ」機能

$
0
0

vim タブページ

みなさんvimのタブページ機能を使っていますか?

この一番上のバーに出ている、ブラウザなどでよくある「タブ」のことです。↓

vim-tabpage2.jpg

これはvim 7.3から導入された機能なのですが、なぜかあまり使われていません。
Google検索 vim タブページ

 

しかし、これはめちゃめちゃ便利です!
今までtmuxでvimを複数個立ち上げており、ちょっと別の作業をするときは別のvimを起動していたのですが、タブページを利用することによって1つのvimで作業することができ、更にヤンクももちろんタブ間で共有されるので開発効率がかなり上がりました。

あまり使われていない原因はおそらく、デフォルトの状態だと、タブ間の移動がかなりめんどくさいからだと思います。

デフォルトはこんな感じ
Screen Shot 2013-07-16 at 16.15.16.png

右側のタブに移動するたびに :tabnext
ラストのタブに移動するには :tablastなど打っていられません。

また、:tabnext3などのコマンドで、左から3番目のタブに移動できるのですが、
デフォルトのタブライン(タブのステータスバー)は番号も書いてないので、簡単には移動出来ません。

 

そこで暗黒美夢王(ダークビムマスター)ことShougoさんの.vimrcを参考に
快適にタブページ機能を使えるよう.vimrcを作りました。

参考 Shougo/shougo-s-github

.vimrc
" Anywhere SID.function!s:SID_PREFIX()return matchstr(expand('<sfile>'),'<SNR>\d\+_\zeSID_PREFIX$')endfunction" Set tabline.function!s:my_tabline()"{{{lets=''foriin range(1, tabpagenr('$'))let bufnrs = tabpagebuflist(i)let bufnr = bufnrs[tabpagewinnr(i)-1]  " first window, first appearslet no =i" display 0-origin tabpagenr.letmod= getbufvar(bufnr,'&modified') ? '!' : ' 'lettitle= fnamemodify(bufname(bufnr),':t')lettitle='[' . title . ']'lets .='%'.i.'T'lets .='%#' . (i== tabpagenr() ? 'TabLineSel' : 'TabLine') . '#'lets .= no . ':' . titlelets .=modlets .='%#TabLineFill# 'endforlets .='%#TabLineFill#%T%=%#TabLine#'returnsendfunction"}}}let&tabline='%!'. s:SID_PREFIX() . 'my_tabline()'setshowtabline=2" 常にタブラインを表示" The prefix key.nnoremap    [Tag]   <Nop>
nmap    t [Tag]
" Tab jumpfornin range(1,9)
  execute 'nnoremap <silent> [Tag]'.n':<C-u>tabnext'.n.'<CR>'endfor" t1 で1番左のタブ、t2 で1番左から2番目のタブにジャンプ

map <silent> [Tag]c :tablast<bar>tabnew<CR>" tc 新しいタブを一番右に作る
map <silent> [Tag]x :tabclose<CR>" tx タブを閉じる
map <silent> [Tag]n :tabnext<CR>" tn 次のタブ
map <silent> [Tag]p :tabprevious<CR>" tp 前のタブ

これを.vimrcに書き込むことにより、下のような写真の状態になり、

vim-tabpage2.jpg

  • t1, t2,,,t9で左からn番目のタブにジャンプ
  • tcで新しいタブ, txでタブを閉じる

でタブページを効率的に使えます。

tに既にコマンドを割り当てている場合は、[Tag]を別にキーに当てはめれば問題なく使えると思います。


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>