Heute zeige ich euch, wie ich tmux benutze und erläutere den Plugin-Mechanismus, ein paar Plugins und mit tmuxinator auch ein Programm um sessions vorzubereiten.
Grundsätzliches
Ich befinde mich eigentlich immer in einer tmux-Session, weil es praktisch keine Nachteile hat. Wenn ich ein Terminal starte, werde ich schon begrüßt mit:
Code: Alles auswählen
current tmux sessions:
debianforum *
default *
attach or create (empty if none):
Hierfür nutze ich https://github.com/huboles/zshmux. Der Name deutet auf die zsh hin, aber es funktioniert laut Autor generell mit jeder bash-kompatiblen Shell.
Tmuxinator
Manchmal möchte ich eine vorbereitete, aber noch nicht aktive Session starten, dafür gehe ich mit [enter] direkt in die Shell.
Dann starte ich eine Session mit tmuxinator start meine_session um meine_session zu starten.
Woher weiß tmuxinator nun, was meine_session bedeutet?
eine neue Session vorbereiten
tmuxinator new meine_session erzeugt eine neue Konfiguration, die bei mir dann in ~/.config/tmuxinator/meine_session.yml liegt. Zugleich wird im editor die Konfigurationsdatei geöffnet. Hier beispielhaft eine von mir, ich habe unwichtig Teile rausgelassen und den Rest kommentiert.
Code: Alles auswählen
name: meine_session # Der Name der Session, wird so in tmux übernommen
root: ~/ # Startverzeichnis für die terminals
startup_window: shell # welches Fenster soll am Anfang Fokus bekommen?
windows: # Alle Fenster die direkt erstellt werden sollen inklusive der Befehle, die direkt beim Starten ausgeführt werden
- chezmoi:
- chezmoi cd
- git pull
- editor:
layout: main-vertical
panes:
- editor:
- vim
- shell:
- zsh
- clear
- shell:
- zsh
- clear
Vorausgewählt ist die Shell, weil ich da direkt loslegen möchte.
Grundsätzlich kann man hier mit beliebigen vielen Fenstern loslegen und diese auch noch in "Panes" unterteilen.
Ich nutze es auch auf der Arbeit, weil ich dort mit einem Dutzend Projekte zu tun habe und kann jedes von denen auf diese Art starten. Dort fahre ich dann z.B. direkt docker hoch, zeige log files in einem Fenster und habe schon die Verzeichnisse geöffnet, von denen ich erwarte, dass ich ohnehin dort rein muss.
Plugins
Zusätzlich zu tmuxinator nutze ich noch den Plugin-Mechanismus von tmux um es mit weiteren Fähigkeiten zu versehen. Um tmux plugin-fähig zu machen, benötigt man den tmux plugin manager.
Den kann man folgendermaßen in seine tmux config eintragen:
Code: Alles auswählen
# List of plugins
set -g @plugin 'tmux-plugins/tpm'
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
run '~/.tmux/plugins/tpm/tpm'
Code: Alles auswählen
# type this in terminal if tmux is already running
tmux source ~/.tmux.conf
1. Plugin in die tmux config eintragen, hier mal mit extrakto als Beispiel:
Code: Alles auswählen
# search for any output. prefix + tab
set -g @plugin 'laktak/extrakto'
Eine Liste der derzeit verfügbaren Plugins kann man sich hier anschauen.
extrakto
Beispielhaft stelle ich eines meiner genutzten Plugins vor, extrakto.
Wenn das wie oben installiert ist, reicht ein Drücken von Prefix + tab aus, um es zu aktivieren.
Dann wird ein Menü gezeigt, in dem man per regulärem Ausdruck alles auswählen kann, was als Output in diesem Fenster passiert ist. Sehr praktisch um Wörter oder ganze Zeilen zu kopieren ohne die Maus zu bemühen.
Um das Ganze mal in Aktion zu sehen könnt ihr euch folgendes Video anschauen, wo der Autor von extrakto ein wenig mit git herumspielt und ein paar der Fähigkeiten zeigt.
Ich hoffe, ich konnte euch einen brauchbaren Eindruck, wie ich tmux nutze, geben. Um es nicht ausufern zu lassen verzichte ich mal auf die Beschreibung der anderen zehn Plugins, die ich nutze. Falls Interesse besteht, kann ich aber auch das noch gerne machen.