Да, ярлыки вкладок по умолчанию делают вкладки действительно раздражающими, если у вас включен autochdir.По сути, они показывают полный путь (сокращенно), если ваш :pwd
отличается от местоположения файла, и просто имя файла, если ваш :pwd
совпадает с именем файла.Когда вы включаете autochdir
, ваш :pwd
меняется каждый раз, когда вы загружаете буфер, в том числе при переключении вкладок.Мне нравится autochdir
, потому что :ls
и любые файловые операции автоматически относятся к cwd активного буфера.Я всегда знаю это местоположение, потому что у меня есть полный путь в строке состояния.
У меня есть набор графических вкладок, чтобы показать мне несколько разных вещей ... Номер вкладки, измененный индикатор, если есть более одного окнана вкладке (показать количество) и всегда показывать только имя файла буфера (используя имя в активном окне, если имеется более одного окна).
" GUI Tab label full path
function! GuiTabLabeler()
let tabno = tabpagenr()
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
" Append the buffer name
return tabno . " " .
\ fnamemodify(bufname(bufnrlist[tabpagewinnr(v:lnum) - 1]), ":t")
\ . label
endfunction
set guitablabel=%!GuiTabLabeler()
Номера вкладок на вкладкахэто хорошо, особенно если вы делаете что-то вроде сопоставления с ними ваших цифровых клавиш:
" Tab navigation in with alt-#
noremap <A-1> :tabnext 1<CR>
noremap <A-2> :tabnext 2<CR>
noremap <A-3> :tabnext 3<CR>
noremap <A-4> :tabnext 4<CR>
noremap <A-5> :tabnext 5<CR>
noremap <A-6> :tabnext 6<CR>
noremap <A-7> :tabnext 7<CR>
noremap <A-8> :tabnext 8<CR>
noremap <A-9> :tabnext 9<CR>
noremap <A-0> :tabnext 0<CR>
Таким образом, мои графические вкладки остаются довольно узкими и чистыми.Я предпочитаю иметь имя файла с полным путем в строке состояния (среди прочего):
" Statusline
set laststatus=2
let &statusline='%F %r%m [%{&fileformat}]%y[%{strlen(&fenc)?&fenc:&enc}]'
\ . '%= --%3p%% -- l:%3l, c:%3c (%03b 0x%02B)'