微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

VIM-美化你的标签栏

vim的标签栏是一个比较有用的功能,我们可以通过gt和gT快捷键前后切换标签页,也可以用数字+gt的方式,快速跳转到某个标签页,但是认的标签栏上标签序号并没有显示出来,在标签页较多的时候,想要通过数字+gt的方式迅速跳转时,就不是很方便了。

有鉴于此,笔者通过一定的摸索, 自定义了自己的一个简单的标签栏。代码如下:

function! MyTabLabel(n)
    let label = ‘‘
    let buflist = tabpagebuflist(a:n)
    for bufnr in buflist
        if getbufvar(bufnr,"&modified")
            let label = + 
            break
        endif
    endfor

    " 设置标签页号 (用于鼠标点击)
    let label .= a:n .   

    let winnr = tabpagewinnr(a:n)
    let name = bufname(buflist[winnr - 1]) 
    if name == ‘‘
        "为没有名字的文档设置个名字
        if &buftype == quickfix
            let name = [Quickfix List]
        else
            let name = [No Name]
        endif
    else
        "只取文件
        let name = fnamemodify(name,:t)
    endif

    let label .= name
    "追加窗口数量
    let wincount = tabpagewinnr(a:n,$)
    return label . [ . wincount . ] 
endfunction

function! MyTabLine()
    let s = ‘‘
    for i in range(tabpagenr($))
        " 选择高亮
        if i + 1 == tabpagenr()
            let s .= %#TabLinesel#
        else
            let s .= %#TabLine#
        endif

        " MyTabLabel() 提供标签
        let s .=  %<%{MyTabLabel( . (i + 1) . )} 
    endfor

    " 最后一个标签页之后用 TabLineFill 填充并复位标签页号
    let s .= %#TabLineFill#%T

    " 右对齐用于关闭当前标签页的标签
    if tabpagenr($) > 1
        let s .= %=%#TabLine#%999XX
    endif

    return s
endfunction

set tabline=%!MyTabLine()

将这段代码复制到.vimrc之中,:source ~/.vimrc或者重新打开vim,即可看到新的标签效果。下面给出了标签栏优化前后的对比:

前:

分享图片

 

后:

分享图片

可以看到相比于之前,保留了修改标记“+”、窗口数量,只保留了文件名,标签栏的最大长度比之前更长,最关键的是,增加标签序号的显示。这个改动初看可能没有以前的好看,但是关键在于,我们掌握了自定义标签栏的方式,具体细节可以通过查阅vim帮助手册来获取

参考:

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐