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幫助手冊來獲取。

參考:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM