Vimでのタブヘッダーの命名

Vimは、編集可能なファイル(タブ(タブ))をグループ化する非常に便利な方法を提供します。 そして、すべてがうまくいきますが、私は個人的に1つの欠点に大きく悩まされました-タブ名に番号がないため、コマンドで目的のタブに切り替えるとき:tabn [tab_num]あなたがすべてのタブを見て、このタブのシリアル番号を計算するたびに 頻繁に切り替えると、本当に気になり始めます...

先日、Vimのドキュメントを読んで、各タブの名前を生成する独自の機能を割り当てることができることに驚いた。 これを行う方法の簡単な例がありました。 Vimスクリプトチュートリアルに目を通した後、上記の例を修正して次の結果を得ました(テキストおよびGUI表示モードの場合):


同じ結果を得るために〜/ .vimrcに貼り付ける必要があるコードは次のとおりです。

「タブヘッダーの命名に独自の関数を設定する->
関数 MyTabLine ()
let tabline = ''

「各タブのタブラインを形成する->
範囲内の for i tabpagenr '$' ))
「現在選択されているタブのタイトルを強調表示します。
i + 1 == tabpagenr ()の場合
let tabline 。= '%#TabLineSel#'
他に
let tabline 。= '%#TabLine#'
エンディフ

「タブ番号を設定する
tabline 。= '%'とし ます。 i + 1 「T」

「タブの名前を取得する
let tabline 。= '%{MyTabLabel(' i + 1 ')} |'
終わり
「各タブのタブラインを作成<-

「余分なスペースを埋める
let tabline 。= '%#TabLineFill#%T'

「右揃えのタブ閉じるボタン
tabpagenr '$' > 1の場合
let tabline 。= '%=%#TabLine#%999XX'
エンディフ

タブラインを返す
最終機能

関数 MyTabLabel n
let label = ''
let buflist = tabpagebuflist a:n

「ファイル名とタブ番号->
let label = substitution bufname buflist [tabpagewinnr a:n -1 ] '。* /'''''

ラベル== ''の 場合
let label = '[No Name]'
エンディフ

let label 。= '(' 。a:n ')'
「ファイル名とタブ番号<-

「タブに少なくとも1つあるかどうかを判断する
「変更されたバッファ。
「->
範囲内の for i len buflist ))
if getbufvar buflist [i]、 "&modified"
let label = '[+]' ラベル
破る
エンディフ
終わり
「<-

返品ラベル
最終機能

関数 MyGuiTabLabel ()
return '%{MyTabLabel(' tabpagenr () ')}'
最終機能

タブラインを 設定 =%!MyTabLine()
set guitablabel =%!MyGuiTabLabel()
「タブヘッダーの命名に独自の関数を設定<-

ちなみに、Vimではスクリプトを書くためにかなり興味深い言語が使用されます-Pythonに非常に似ており、使用も簡単で便利です-必要に応じて素早く理解することは難しくありません。

ソース:私のブログ-konishchevdmitry.blogspot.comからのクロスポスト

Source: https://habr.com/ru/post/J29373/


All Articles