Vim: alterar rótulo para guia específica

19

Digamos que eu tenha várias abas abertas no Vim, com uma tabline parecida com esta:

1 v/file1.py 2 t/file.py 1 t/file.py 1 o/otherfile.py

Veja como as duas guias dizem "t / file.py"? Esses são arquivos diferentes, eles são transformados no mesmo rótulo da guia.

No meu fluxo de trabalho, os títulos das guias geralmente são ambíguos (sim, para o Chef nomear tudo "default.rb") ou inúteis ("Eu conheço uma dessas 8 guias com 4 buffers cada uma com o arquivo que estou procurando ...").

Gostaria de renomear as guias para indicar o que elas representam logicamente:

1 homepage_view 2 tests 1 homepage_template 1 o/otherfile.py

Eu estou bem com as guias padronizadas para um rótulo baseado em nome de arquivo, desde que eu esteja livre para alterá-lo assim que a guia for criada.

Como posso fazer isso no Vim?

spiffytech
fonte
1
Não tenho tempo para experimentar agora, mas veja :help setting-tabline(para vim em um terminal) ou :help setting-guitablabel(para gvim). Você pode escrever uma função que verifique uma variável tab-local e retorne esse ou algum padrão. Depois de abrir uma guia :let t:mytablabel = 'homepage_template',.
21134 benjifisher

Respostas:

15

Há um pequeno plugin chamado Taboo que facilita isso. Basta instalá-lo e, em seguida, você pode alterar o título da guia com:

:TabooRename My Tab Title

Você pode consultar o código-fonte desse plug-in se estiver interessado em escrever sua própria solução.

Jonathan Potter
fonte
Tabooé fantástico. TabooResete TabooRenameliteralmente alterna dois "modos" da linha de tabulação ==> uma guia nomeada pelo Taboo e uma guia nomeada automaticamente pelo Vim. Isso replica o " Windows nomeado " do Tmux perfeitamente. Melhor ainda, as guias nomeadas em Taboo podem ser restauradas usando o Startify (ou em qualquer outra ferramenta de economia de sessão).
llinfeng 30/11
8

Para gvim, consulte

:help 'guitablabel'
:help setting-guitablabel

Defina a opção para uma expressão que seja avaliada como t:mytablabel(uma variável tab-local) se existir, ou então como uma sequência vazia (ou seja, usar o padrão):

:set guitablabel=%{exists('t:mytablabel')?t:mytablabel\ :''}

Talvez isso já seja muito complicado, ou talvez você queira ficar mais chique. Nesse caso, defina uma função:

function! GuiTabLabel()
  return exists('t:mytablabel') ? t:mytablabel : ''
endfunction
:set guitablabel=%{GuiTabLabel()}
:set go+=e

Em qualquer guia em que você queira substituir o padrão, faça algo como

:let t:mytablabel = 'homepage_template'

Se você estiver usando o vim em um terminal, não o gvim, será necessário definir a 'tabline'opção em vez de 'guitablable'. Isso é um pouco mais complicado, pois você precisa de uma única expressão que inclua rótulos para todas as guias abertas. Há um exemplo completo em

:help setting-tabline
benjifisher
fonte