如何让tab只显示文件名而不是vim中的完整路径

Hai*_*ang 31 vim

如果文件的完整路径很长,则无法分辨给定选项卡中的文件.所以我想知道是否有一种方法让tab只显示文件名而不是文件的完整路径,在某些情况下可能很方便.需要你的帮助,谢谢你提前.

Hab*_*abi 32

尝试

:set guitablabel=%t

有关可能选项的格式,请参阅

:help'statusline'

  • 这仅适用于 GUI (3认同)
  • 你读过这个问题吗?问题是关于 VIM 而不是 Gvim,令人惊讶的是 stackoverflow 上关于这个主题的大多数答案都被误解了! (2认同)

小智 21

我的vimrc中有以下内容:

set guitablabel=\[%N\]\ %t\ %M 
Run Code Online (Sandbox Code Playgroud)

输出:[Number]文件名和+符号,如果文件被修改([4] foo.html +).使用命令[Number] gt立即切换到所选选项卡非常有用(如果我想跳转到选项卡4中的文件,则为4gt)

  • 需要注意的是,%N仅显示gui vim中的选项卡号.如果你有`set guioptions- = e`,或正在使用终端vim,那么%N似乎代表在选项卡中打开的窗口(拆分)的数量而不是标签号.请参阅`h setting-tabline`或https://github.com/mkitt/tabline.vim (2认同)

Dav*_*rei 5

我使用此解决方案而不是 Habi 的解决方案,因为该解决方案仍然保留在选项卡中放置“+”符号以指示正在修改的文件的默认功能,以及选项卡中窗口数量的计数。所以它的工作原理与默认标签标签基本相同,但只使用文件名,而不是完整路径。

" Tab headings
function GuiTabLabel()
    let label = ''
    let bufnrlist = tabpagebuflist(v:lnum)

    " Add '+' if one of the buffers in the tab page is modified
    for bufnr in bufnrlist
        if getbufvar(bufnr, "&modified")
            let label = '+'
            break
        endif
    endfor

    " Append the number of windows in the tab page if more than one
    let wincount = tabpagewinnr(v:lnum, '$')
    if wincount > 1
        let label .= wincount
    endif
    if label != ''
        let label .= ' '
    endif

    " Append the buffer name (not full path)
    return label . "%t"
endfunction

set guitablabel=%!GuiTabLabel()
Run Code Online (Sandbox Code Playgroud)