Posted at

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

More than 1 year has passed since last update.

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 を自分好みにちょっと近づけられたような気がして満足度は高めです。