Come etichettare le schede tmux con il nome del file modificato in vim?


14

Ogni volta che apro una sessione tmux nel terminale, tutte le schede contenenti sessioni vim sono etichettate vim.

La mia domanda è: come configurarlo per etichettare le schede tmux con il nome del file modificato o qualcosa di simile vim | test.cppusato come titolo delle schede in questione.


1
può essere d'aiuto: stackoverflow.com/a/15124717/2558252 ?
nobe4,

grazie per questo ma puoi per favore elaborare il processo in modo un po 'dettagliato? Inoltre la risposta non è completa. Il ragazzo ha appena dato un suggerimento
Mayukh Sarkar,

dato che la domanda ha avuto risposta (e IMHO correttamente) potresti accettarla?
nobe4,

Risposte:


19

Ecco qua:

autocmd BufReadPost,FileReadPost,BufNewFile,BufEnter * call system("tmux rename-window 'vim | " . expand("%:t") . "'")

Decomposizione:

autocmd BufReadPost,FileReadPost,BufNewFile,BufEnter * call

In caso di lettura buffer, lettura file o buffer nuovo evento file (vedi :help autocmd-events) eseguire il comando successivo:

call system()

Chiama una funzione di sistema e passa il testo:

"tmux rename-window 'vim | "  

Rinomina la finestra corrente con una stringa che inizia con vim |

. expand("%:t") 

Aggiungi alla stringa il nome del file (vedi questo articolo per la formattazione e questo post per l'inserto di espansione)

. "'"

Aggiungi il finale 'per chiudere il comando.

Dopo l'espansione apparirà (durante la modifica del file .vimrc):

system("tmux rename-window 'vim | .vimrc'")

Come ha detto @erthalion nel commento, puoi ripulire lasciando Vim con:

autocmd VimLeave * call system("tmux rename-window 'tmux'")

1
Penso che sarà bello includere l' BufEnterevento in questo elenco (per cambiare etichetta anche quando passiamo da buffer esistenti) e qualcosa del genere autocmd VimLeave * call system("tmux rename-window 'tmux'")per la pulizia.
erthalion,

3

Per ripristinare lo schema di denominazione tmux predefinito quando si esce da Vim è anche possibile:

autocmd VimLeave * call system("tmux setw automatic-rename")

Questo è usato all'unisono con l'altra risposta fornisce la soluzione migliore. Ho visto lo snippet di rinominare-finestra tmux ovunque, ma questa è la prima volta che qualcuno ha sottolineato l'opzione di rinominare automaticamente la finestra di tmux. Grazie.
f3xy,

1

Questo è ciò che ho inserito nel mio video grazie alla risposta di @raphael

Installo anche il plug-in tmux-plugins / vim-tmux-focus-events per gli eventi FocusGained e FocusLost.

augroup tmux                                                                                                                                                                                                                                                                                                                 
  autocmd!                                                                                                                                                                                                                                                                                                                 
  if exists('$TMUX')                                                                                                                                                                                                                                                                                                       
    autocmd BufReadPost,FileReadPost,BufNewFile,FocusGained * call system("tmux rename-window " . expand("%:t"))                                                                                                                                                                                                         
    autocmd VimLeave,FocusLost * call system("tmux set-window-option automatic-rename")                                                                                                                                                                                                                                  
  endif                                                                                                                                                                                                                                                                                                            
augroup END
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.