Vim: cambiar etiqueta para pestaña específica

19

Digamos que tengo un montón de pestañas abiertas en Vim, con una línea de tabulación que se parece a esto:

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

¿Ves cómo dos pestañas dicen "t / file.py"? Esos son archivos diferentes, simplemente se convierten en la misma etiqueta de pestaña.

En mi flujo de trabajo, los títulos de las pestañas suelen ser ambiguos (sí, para Chef nombrando todo "default.rb") o poco útiles ("Sé que una de estas 8 pestañas con 4 buffers tiene el archivo que estoy buscando ...").

Me gustaría cambiar el nombre de las pestañas para indicar lo que representan lógicamente:

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

Estoy bien con las pestañas predeterminadas a una etiqueta basada en nombre de archivo, siempre que pueda cambiarla una vez que se haya creado la pestaña.

¿Cómo puedo hacer esto en Vim?

spiffytech
fuente
1
No tengo tiempo para experimentar en este momento, pero vea :help setting-tabline(para vim en una terminal) o :help setting-guitablabel(para gvim). Podría escribir una función que verifique una variable local de tabulación y devuelva eso o algo predeterminado. Entonces, después de abrir una pestaña, :let t:mytablabel = 'homepage_template'.
benjifisher

Respuestas:

15

Hay un pequeño plugin llamado Taboo que lo hace fácil. Simplemente instálelo y luego puede cambiar el título de la pestaña con:

:TabooRename My Tab Title

Puede consultar el código fuente de ese complemento si está interesado en escribir su propia solución.

Jonathan Potter
fuente
Tabooes fantastico. TabooResety TabooRenameliteralmente alterna dos "modos" de Tab-line ==> una pestaña con nombre de Taboo , y una pestaña con nombre automático de Vim. Esto replica perfectamente el " Windows nombrado " de Tmux. Mejor aún, las pestañas nombradas en Taboo se pueden restaurar usando Startify (o en cualquier otra herramienta para guardar sesiones).
llinfeng
8

Para gvim, vea

:help 'guitablabel'
:help setting-guitablabel

Establezca la opción en una expresión que se evalúe como t:mytablabel(una variable local de tabulación) si existe, o bien en una cadena vacía (lo que significa usar el valor predeterminado):

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

Tal vez eso ya sea demasiado complicado, o tal vez quieras ser más elegante. En ese caso, defina una función:

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

Luego, en cualquier pestaña donde desee anular el valor predeterminado, haga algo como

:let t:mytablabel = 'homepage_template'

Si está utilizando vim en un terminal, no gvim, entonces debe configurar la 'tabline'opción en lugar de 'guitablable'. Esto es un poco más complicado, ya que necesita una sola expresión que incluya etiquetas para todas las pestañas abiertas. Hay un ejemplo completo en

:help setting-tabline
benjifisher
fuente