zoukankan      html  css  js  c++  java
  • VIM-美化你的标签栏

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

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

    "-----------------------美化标签栏-----------------------
    "定义颜色
    hi SelectTabLine term=Bold cterm=Bold gui=Bold ctermbg=None
    hi SelectPageNum cterm=None ctermfg=Red ctermbg=None
    hi SelectWindowsNum cterm=None ctermfg=DarkCyan ctermbg=None
    
    hi NormalTabLine cterm=Underline ctermfg=Black ctermbg=LightGray
    hi NormalPageNum cterm=Underline ctermfg=DarkRed ctermbg=LightGray
    hi NormalWindowsNum cterm=Underline ctermfg=DarkMagenta ctermbg=LightGray
    
    function! MyTabLabel(n, select)
        let label = ''
        let buflist = tabpagebuflist(a:n)
        for bufnr in buflist
            if getbufvar(bufnr, "&modified")
                let label = '+' 
                break
            endif
        endfor
    
        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
        return label
    endfunction
    
    function! MyTabLine()
        let s = ''
        for i in range(tabpagenr('$'))
            " 选择高亮
            let hlTab = ''
            let select = 0 
            if i + 1 == tabpagenr()
                let hlTab = '%#SelectTabLine#'
                " 设置标签页号 (用于鼠标点击)
                let s .= hlTab . "[%#SelectPageNum#%T" . (i + 1) . hlTab
                let select = 1
            else
                let hlTab = '%#NormalTabLine#'
                " 设置标签页号 (用于鼠标点击)
                let s .= hlTab . "[%#NormalPageNum#%T" . (i + 1) . hlTab
            endif
    
            " MyTabLabel() 提供标签
            let s .= ' %<%{MyTabLabel(' . (i + 1) . ', ' . select . ')} '
    
            "追加窗口数量
            let wincount = tabpagewinnr(i + 1, '$')
            if wincount > 1
                if select == 1
                    let s .= "%#SelectWindowsNum#" . wincount
                else
                    let s .= "%#NormalWindowsNum#" . wincount
                endif
            endif
            let s .= hlTab . "]"
        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帮助手册来获取。

    参考:

  • 相关阅读:
    如何安装unidac 6.2.8 到delphi 7
    Sqoop
    Spark-PySpark sql各种内置函数
    Spark译文(三)
    Spark译文(二)
    Spark译文(一)
    YARN详解
    Spark2.X管理与开发
    Hadoop2.X管理与开发
    离线综合案例
  • 原文地址:https://www.cnblogs.com/minglee/p/9934152.html
Copyright © 2011-2022 走看看