2012-07-06 4 views
6

Vim - очень продуктивный редактор, и мне нравится использовать его каждый день, но я обнаружил, что перемещение между вкладками занимает больше времени, чем нужно.Как перечислить вкладки в vim?

Когда я хочу переключиться на другую вкладку, я часто повторяю gt или gT несколько раз. Vim обеспечивает лучший способ достижения необходимой вкладки - n + gt, где n - номер табуляции. Но для его использования вы должны сначала подсчитать номер счета. Быстро становится скучным, если вы откроете дюжину вкладок.

Я думаю, было бы неплохо перечислить вкладки. Один номер на каждой вкладке перед именем файла, что-то вроде этого:

1 Readme | 2 main.c | 3 main.h | 4 process.h 

Я надеюсь, что это можно настроить Vim сделать это путем редактирования конфигурации или с помощью какой-то плагин.

Есть ли способ достичь этого?

+1

Вы можете открыть вкладки в ViM ?! Каждый день вы узнаете что-то новое с ViM – Shahbaz

ответ

5

Вы можете использовать опцию tabline для установки метки вкладок в консольном режиме vim. См. Справку по адресу :h setting-tabline, которая также показывает очень простой минимальный пример, который вы можете настроить по своему усмотрению, например. для чего вы хотите, я бы использовал что-то вроде этого:

fu! MyTabLabel(n) 
let buflist = tabpagebuflist(a:n) 
let winnr = tabpagewinnr(a:n) 
let string = fnamemodify(bufname(buflist[winnr - 1]), ':t') 
return empty(string) ? '[unnamed]' : string 
endfu 

fu! MyTabLine() 
let s = '' 
for i in range(tabpagenr('$')) 
" select the highlighting 
    if i + 1 == tabpagenr() 
    let s .= '%#TabLineSel#' 
    else 
    let s .= '%#TabLine#' 
    endif 

    " set the tab page number (for mouse clicks) 
    "let s .= '%' . (i + 1) . 'T' 
    " display tabnumber (for use with <count>gt, etc) 
    let s .= ' '. (i+1) . ' ' 

    " the label is made by MyTabLabel() 
    let s .= ' %{MyTabLabel(' . (i + 1) . ')} ' 

    if i+1 < tabpagenr('$') 
     let s .= ' |' 
    endif 
endfor 
return s 
endfu 
set tabline=%!MyTabLine() 
+0

Спасибо, это именно то, что я искал! Но 'set tabline =%! MyTabLine()' следует добавить в самом низу вашего примера, или все это не сработает. – lambdas

+0

О да, это должно быть добавлено. Я отведу его в ответ –

2

Если вы используете gvim:

set guitablabel=(%N)\ %t\ %M 

Тип :help tabline и :help guitablabel читать больше.

В документе содержится function MyTabLine().

+0

Спасибо, но я использую vim с эмулятором терминала. – lambdas

+0

Попробуйте 'set tabline' – kev

Смежные вопросы