LoginSignup
18
7

More than 5 years have passed since last update.

タブページ数に応じて幅が変わる tabline プラグインを作成しました

Posted at

Vim (その2) Advent Calendar 2016 の 19日目の記事です。

vim-responsive-tabline

タブページ数に応じて幅が変わる tabline を実現する vim-responsive-tabline を作りました。

vim-responsive-tabline.gif

動機

自分はウィンドウの分割等はせず、1バッファを1タブページに割り当てる使い方をしているため、タブページが増えやすく tabline に表示しきれなくなることが度々あります。
そこで、chrome のようにタブが増えたらタブ1つあたりの幅を小さくしてくれると嬉しいなと思い vim-responsive-tabline を作成しました。

仕組み

1つのタブページあたりの幅を &columns をタブページ数で割って算出するという単純な仕組みです。

表示するファイル名が tab_width (タブ1つあたりの幅)を超えていた場合は切り詰め、tab_width以下の場合はスペースで埋めることで、幅を固定しています。

  let label_margin = 2
  let filename_length = strwidth(filename) + label_margin
  if filename_length > a:tab_width
    " Truncate filename
    let ellipsis = '...'
    let filename = filename[0:(a:tab_width - strwidth(ellipsis) - label_margin - 1)].ellipsis
  else
    " Append spacer
    let filename = filename . repeat(' ', a:tab_width - filename_length)
  endif

課題

  • オプションの追加
  • help の作成

参考

vim-responsive-tabline を作成するにあたって、以下のサイトを参考にさせていただきました。

感想

小さいプラグインではありますが、Vim を自分好みにちょっと近づけられたような気がして満足度は高めです。

18
7
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
18
7