【问题标题】:how to let tab display only file name rather than the full path in vim如何让选项卡只显示文件名而不是vim中的完整路径
【发布时间】:2010-03-18 10:14:33
【问题描述】:

如果文件的完整路径很长,您将无法分辨给定选项卡中的文件。所以我想知道有没有办法让选项卡只显示文件名而不是文件的完整路径,在某些情况下可能很方便。

【问题讨论】:

    标签: vim


    【解决方案1】:

    试试

    :set guitablabel=%t

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

    :help 'statusline'

    【讨论】:

    • 这仅适用于 GUI
    • 在终端中使用tabline 选项。需要一个函数来指定“一次整个标签页行”。请参阅setting-tabline 的帮助页面。
    【解决方案2】:

    我的 vimrc 中有以下内容:

    set guitablabel=\[%N\]\ %t\ %M 
    

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

    【讨论】:

    • 需要注意的是%N只显示gui vim中的tab号。如果您有set guioptions-=e,或者正在使用终端vim,那么 %N 似乎代表选项卡中打开的窗口(拆分)数,而不是选项卡号。请参阅h setting-tabline 或此github.com/mkitt/tabline.vim
    【解决方案3】:

    我使用此解决方案而不是 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()
    

    【讨论】:

    • 理想的解决方案:在所有选项卡标题中列出路径/单词/文件名,如果两个标题相同,则选择唯一的/部分/路径名来命名该选项卡。代码更复杂,但用户更容易自动消除歧义。
    【解决方案4】:

    其他解决方案仅适用于 GUI VIM,不适用于终端 vim 或嵌入式 vim (nvim)。

    您可以使用vim-plugvim-airline。然后,将此添加到您的.vimrc

    call plug#begin(stdpath('data') . '/plugged')
    Plug 'vim-airline/vim-airline'
    Plug 'vim-airline/vim-airline-themes'
    call plug#end()
    
    let g:airline#extensions#tabline#enabled = 1
    let g:airline#extensions#tabline#fnamemod = ':t'
    

    【讨论】:

      猜你喜欢
      • 2012-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-13
      • 2022-07-15
      • 1970-01-01
      • 1970-01-01
      • 2020-04-04
      相关资源
      最近更新 更多