【发布时间】:2010-03-18 10:14:33
【问题描述】:
如果文件的完整路径很长,您将无法分辨给定选项卡中的文件。所以我想知道有没有办法让选项卡只显示文件名而不是文件的完整路径,在某些情况下可能很方便。
【问题讨论】:
标签: vim
如果文件的完整路径很长,您将无法分辨给定选项卡中的文件。所以我想知道有没有办法让选项卡只显示文件名而不是文件的完整路径,在某些情况下可能很方便。
【问题讨论】:
标签: vim
试试
:set guitablabel=%t
有关可能选项的格式,请参阅
:help 'statusline'
【讨论】:
tabline 选项。需要一个函数来指定“一次整个标签页行”。请参阅setting-tabline 的帮助页面。
我的 vimrc 中有以下内容:
set guitablabel=\[%N\]\ %t\ %M
输出: [Number] 文件名和 + 号(如果文件被修改)([4] foo.html +)。 Number 对于使用命令 [Number]gt 立即切换到所选选项卡非常有用 (4gt如果我想跳转到标签4中的文件)
【讨论】:
set guioptions-=e,或者正在使用终端vim,那么 %N 似乎代表选项卡中打开的窗口(拆分)数,而不是选项卡号。请参阅h setting-tabline 或此github.com/mkitt/tabline.vim
我使用此解决方案而不是 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()
【讨论】:
其他解决方案仅适用于 GUI VIM,不适用于终端 vim 或嵌入式 vim (nvim)。
您可以使用vim-plug 和vim-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'
【讨论】: