如果文件的完整路径很长,你无法知道给定选项卡中是哪个文件。所以我想知道有没有一种方法让选项卡只显示文件名而不是文件的完整路径,在某些情况下可能会更方便。
尝试运行以下命令:
:set guitablabel=%t
有关可用选项的格式,请参见以下帮助文档:
:help 'statusline'
我在我的vimrc文件中有以下内容:
set guitablabel=\[%N\]\ %t\ %M
输出如下: [数字] 文件名和加号,如果文件被修改 ([4] foo.html +)。 数字非常有用,可以使用命令 [数字]gt 立即切换到所选选项卡 (如果我想跳转到选项卡 4 中的文件,则为4gt)。
" 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()
.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'
底部链接上的某个人在reddit上发布了这篇文章,运行非常顺畅。
function! Tabline() abort
let l:line = ''
let l:current = tabpagenr()
for l:i in range(1, tabpagenr('$'))
if l:i == l:current
let l:line .= '%#TabLineSel#'
else
let l:line .= '%#TabLine#'
endif
let l:label = fnamemodify(
\ bufname(tabpagebuflist(l:i)[tabpagewinnr(l:i) - 1]),
\ ':t'
\ )
let l:line .= '%' . i . 'T' " Starts mouse click target region.
let l:line .= ' ' . l:label . ' '
endfor
let l:line .= '%#TabLineFill#'
let l:line .= '%T' " Ends mouse click target region(s).
return l:line
endfunction
set tabline=%!Tabline()
tabline
选项。需要一个函数来指定“整个标签页行”。请参阅setting-tabline
的帮助页面。 - Qian