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.


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'")

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")

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.