Wie beschrifte ich tmux tabs mit dem Namen der in vim bearbeiteten Datei?


14

Jedes Mal, wenn ich eine tmux-Sitzung im Terminal öffne, sind alle Registerkarten mit vim-Sitzungen beschriftet vim.

Meine Frage ist: Wie man es so konfiguriert, dass es tmux-Tabs mit dem Namen der bearbeiteten Datei oder so etwas wie vim | test.cppdem Titel der fraglichen Tabs beschriftet .



Vielen Dank dafür, aber können Sie den Vorgang bitte etwas detaillierter erläutern? Außerdem ist die Antwort nicht vollständig. Der Typ gab nur einen Hinweis
— Mayukh Sarkar

als die frage beantwortet wurde (und meiner meinung nach richtig) könntest du sie annehmen?
— Nobe4

Antworten:


19

Es geht los:

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

Zerlegen:

autocmd BufReadPost,FileReadPost,BufNewFile,BufEnter * call

Führen Sie beim Lesen des Puffers, beim Lesen der Datei oder beim Puffern eines neuen Dateiereignisses (siehe :help autocmd-events) den folgenden Befehl aus:

call system()

Rufen Sie eine Systemfunktion auf und übergeben Sie den Text:

"tmux rename-window 'vim | "  

Benennen Sie das aktuelle Fenster mit einer Zeichenfolge um, die mit beginnt vim |

. expand("%:t") 

Fügen Sie der Zeichenfolge den Dateinamen hinzu (siehe diesen Artikel für die Formatierung und diesen Beitrag für die Erweiterungseinfügung).

. "'"

Fügen Sie das Finale hinzu ', um den Befehl zu schließen.

Nach dem Erweitern wird es so aussehen (während die .vimrc-Datei bearbeitet wird):

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

Wie @erthalion im Kommentar sagte, können Sie aufräumen, wenn Sie vim verlassen mit:

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

1
Ich denke, es wird schön sein, ein BufEnterEreignis in diese Liste aufzunehmen (um die Bezeichnung zu ändern, auch wenn wir zwischen vorhandenen Puffern wechseln) und so etwas autocmd VimLeave * call system("tmux rename-window 'tmux'")zum Aufräumen.
— Erthalion

3

Um das standardmäßige tmux-Benennungsschema beim Beenden von vim wiederherzustellen, können Sie auch Folgendes tun:

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

Dies wird im Einklang mit der anderen Antwort verwendet und bietet die beste Lösung. Ich habe das tmux-Umbenennungsfenster-Snippet überall gesehen, aber dies ist das erste Mal, dass jemand auf die Option zum automatischen Umbenennen des tmux-Fensters hingewiesen hat. Vielen Dank.
— f3xy

1

Das ist es, was ich dank der Antwort von @raphael in mein vimrc geschrieben habe

Ich installiere auch das Plugin tmux-plugins / vim-tmux-focus-events für die Ereignisse FocusGained und 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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.