Vim: cambia etichetta per scheda specifica


19

Di 'che ho un sacco di schede aperte in Vim, con una tabline simile a questa:

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

Vedi come due schede indicano entrambe "t / file.py"? Questi sono file diversi, vengono semplicemente trasformati nella stessa etichetta della scheda.

Nel mio flusso di lavoro i titoli delle schede sono spesso ambigui (yay per Chef che nomina tutto "default.rb") o inutili ("So che una di queste 8 schede con 4 buffer ognuna ha quel file che sto cercando ...").

Vorrei rinominare le schede per indicare ciò che rappresentano logicamente:

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

Sto bene con le schede predefinite su un'etichetta basata su nome file, purché sia ​​libera di cambiarla una volta creata la scheda.

Come posso farlo in Vim?


1
Non ho tempo di sperimentare in questo momento, ma vedi :help setting-tabline(per vim in un terminale) o :help setting-guitablabel(per gvim). È possibile scrivere una funzione che controlla la presenza di una variabile tab-local e restituisce quella o qualche impostazione predefinita. Poi, dopo aver aperto un tab, :let t:mytablabel = 'homepage_template'.
benjifisher,

Risposte:


15

C'è un simpatico plugin chiamato Taboo che lo rende facile. Basta installarlo e quindi è possibile modificare il titolo della scheda con:

:TabooRename My Tab Title

Puoi guardare il codice sorgente per quel plugin se sei interessato a scrivere la tua soluzione.


Tabooè fantastico. TabooResete TabooRenameattiva o disattiva letteralmente due "modalità" di Tab-line ==> una scheda denominata di Taboo e una scheda denominata automaticamente di Vim. Questo replica perfettamente il " nome di Windows " di Tmux. Meglio ancora, le schede denominate Taboo possono essere ripristinate utilizzando Startify (o con qualsiasi altro strumento di salvataggio della sessione).
llinfeng

8

Per gvim, vedi

:help 'guitablabel'
:help setting-guitablabel

Impostare l'opzione su un'espressione che restituisce t:mytablabel(una variabile tab-local) se esiste, oppure su una stringa vuota (che significa utilizzare il valore predefinito):

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

Forse è già troppo complicato, o forse vuoi diventare più fantasioso. In tal caso, definire una funzione:

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

Quindi, in qualsiasi scheda in cui desideri sovrascrivere il valore predefinito, fai qualcosa di simile

:let t:mytablabel = 'homepage_template'

Se stai usando vim in un terminale, non gvim, devi impostare l' 'tabline'opzione invece di 'guitablable'. Questo è un po 'più complicato, dal momento che è necessaria un'unica espressione che includa le etichette per tutte le schede aperte. C'è un esempio completo sotto

:help setting-tabline
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.