Jak oznaczyć zakładki Tmux nazwą pliku edytowanego w vimie?

14

Ilekroć otwieram sesję tmux w terminalu, wszystkie zakładki zawierające sesje vim są oznaczone vim.

Moje pytanie brzmi: jak skonfigurować, aby oznaczać karty tmux nazwą edytowanego pliku lub czymś takim, vim | test.cppjak tytuł karty, o której mowa.

Mayukh Sarkar
źródło
1
czy może to pomóc: stackoverflow.com/a/15124717/2558252 ?
nobe4
dziękuję za to, ale czy możesz opisać ten proces bardziej szczegółowo? Ponadto odpowiedź nie jest kompletna. Facet tylko dał wskazówkę
Mayukh Sarkar
skoro odpowiedziano na pytanie (i poprawnie IMHO), czy możesz je zaakceptować?
nobe4

Odpowiedzi:

19

Proszę bardzo :

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

Rozkład:

autocmd BufReadPost,FileReadPost,BufNewFile,BufEnter * call

Podczas odczytu bufora, odczytu pliku lub buforowania nowego zdarzenia pliku (patrz :help autocmd-events) wykonaj następną komendę:

call system()

Wywołaj funkcję systemową i przekaż jej tekst:

"tmux rename-window 'vim | "  

Zmień nazwę bieżącego okna na ciąg rozpoczynający się od vim |

. expand("%:t") 

Dodaj do ciągu nazwę pliku (zobacz ten artykuł na temat formatowania i ten wpis na temat rozszerzenia insert)

. "'"

Dodaj końcowy, 'aby zamknąć polecenie.

Po rozwinięciu będzie wyglądać (podczas edycji pliku .vimrc):

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

Jak powiedział @erthalion w komentarzu, możesz wyczyścić pozostawiając vima za pomocą:

autocmd VimLeave * call system("tmux rename-window 'tmux'")
nobe4
źródło
1
Myślę, że fajnie byłoby dołączyć BufEnterzdarzenie do tej listy (aby zmienić etykietę, nawet gdy przełączamy się między istniejącymi buforami) i coś takiego autocmd VimLeave * call system("tmux rename-window 'tmux'")do czyszczenia.
erthalion
3

Aby przywrócić domyślny schemat nazewnictwa tmux podczas zamykania vima, możesz również:

autocmd VimLeave * call system("tmux setw automatic-rename")
Rafael
źródło
Jest to używane zgodnie z drugą odpowiedzią, która stanowi najlepsze rozwiązanie. Wszędzie widziałem fragment okna zmiany nazwy tmux, ale po raz pierwszy ktoś wskazał opcję automatycznego zmiany nazwy okna tmux. Dziękuję Ci.
f3xy
1

To właśnie umieściłem w moim vimrc dzięki odpowiedzi @raphael

Instaluję również wtyczkę tmux-plugins / vim-tmux-focus-events dla zdarzeń FocusGained i 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
f3xy
źródło