Wie richte ich tmux so ein, dass es mit bestimmten geöffneten Fenstern startet?
shell
production-environment
tmux
Satoru
quelle
quelle
bash --rcfile
Fluchtversuche unternehmen, um dies zum Laufen zu bringen und eine schöne Shell unter wissenschaftlichem Linux mit einer bestimmten aktivierten devtools-Version zu erhalten. Wird dies hier belassen, wenn jemand versucht, das gleiche zu tun.tmux new-window -n "git lg" "scl enable devtoolset-3 'bash --rcfile <(echo \"source \"$HOME/.bashrc\";cd ~/workspace/coolproject/;git lg\")'"
vim
dort steht für den Befehl, der im ersten (und zu diesem Zeitpunkt nur) Bereich des Fensters ausgeführt werden soll. Wenn Sie stattdessen die Sitzung "vim" nennen möchten, müssen Sie das-s
Flag verwenden. Ganze Syntax:tmux new-session -d -s SessionName -n WindowName Command
Ich habe versucht, ein komplexes Fensterraster zu erstellen, und musste mich immer wieder mit dem Wechseln und Teilen von Fenstern befassen. Hier sind meine Erkenntnisse:
Hiermit können Sie mit einer neuen Sitzung beginnen. Um es horizontal oder vertikal zu teilen, verwenden Sie
split-window -h
oder-v
anschließend wie folgt:Erstellt 3 Fenster wie folgt:
Um Befehle in diesen Bereichen auszuführen, fügen Sie sie einfach mit dem
send-keys 'my-command'
Befehl hinzu und der BefehlC-m
führt ihn aus:Und die resultierende Sitzung sollte so aussehen.
Jetzt habe ich versucht, den unteren linken Bereich erneut zu unterteilen, sodass ich entweder mit
last-pane
oder in komplexeren Fenstern zurückschalte ,select-pane -t 1
wobei1
die Nummer des Bereichs in der Reihenfolge beginnt, in der er erstellt wurde0
.Tut das. Grundsätzlich kennen Sie sich aus
split-window
undselect-pane
sind alles, was Sie brauchen. Es ist auch praktisch, mit-p 75
einer prozentualen Größe des Fensters zu übergeben, das erstellt wurdesplit-window
, um mehr Kontrolle über die Größe der Fenster zu haben.Was dazu führt, dass eine Sitzung so aussieht
Hoffe das hilft
tmux
Enthusiasten in der Zukunft.quelle
-h -p 30
erstellt ein horizontales Bedienfeld mit 30% der verfügbaren Höhe.-v -p 75
Gleiches gilt für Vertikale mit 75% Breite.\:
? Ich habe gesehen, wie Skripte mit und ohne funktionieren.\;
Übergibt das Semikolon an tmux anstelle von bash, sodass die Befehle mit einem Aufruf an tmux gesendet werden können. stackoverflow.com/questions/20913198/…Sie können verschiedene Sitzungen von Ihrem
.tmux.conf
Like so beschaffen:Formatieren Sie dann die Sitzungen nach Bedarf:
Dies würde 2 Fenster öffnen, von denen das zweite foo / bar heißt und vertikal in zwei Hälften geteilt wird (50%), wobei foo über bar läuft. Der Fokus liegt in Fenster 2 (foo / bar), oberer Bereich (foo).
Sie können dann Ihre bevorzugte tmux-Sitzung (in diesem Fall session1) mit starten PrefixShifts
quelle
Prefix Shift S
ich in tmux sein und die Beschaffung Ihrer Datei versucht, eine neue Sitzung zu starten, die tmux nicht mag und nicht tut, es sei denn, Sie erzwingen es.Verwenden Sie tmuxinator - Sie können mehrere Sitzungen konfigurieren und auswählen, welche zu einem bestimmten Zeitpunkt gestartet werden soll. Sie können Befehle in bestimmten Fenstern oder Fenstern starten und Windows Titel zuweisen. Hier ist ein Beispiel für die Entwicklung von Django-Anwendungen .
Beispielkonfigurationsdatei:
Eine vollständige Erklärung finden Sie in der README-Datei unter dem obigen Link.
quelle
Schauen Sie unter https://github.com/remiprev/teamocil nach
Sie können Ihre Struktur mit YAML angeben
quelle
Session 1
Erstellen Sie einen Alias in .bashrc
quelle
neww
? Ich kann diesen Befehl nirgendwo finden. ~ Es sieht so ausnew-window
, obwohl ich nicht verstehen kann, warum Sie sowohl die lange als auch die kurze Form verwenden.Zuerst hatte ich den Ansatz von @jasonwryan, aber wenn Sie mehr als 2 Konfigurationen haben, kann es verwirrend werden.
Also habe ich eine Alias-Funktion erstellt:
In habe
~/.tmux/
ich mehrere Sitzungen für viele Zwecke. Zum Beispiel arbeite ich für verschiedene Unternehmen, die jeweils eine andere Entwicklungsumgebung haben. Mit der obigen Alias-Funktion kann ich einfach aufrufen:tmx company1
und die Konfiguration laden, die ich brauche.Update: Der Zweck von "$ 2" nach dem
tmux
Befehl besteht darin, dass Sie zusätzliche tmux-Argumente übergeben können.quelle
no server running on /tmp/tmux-1000/default
) vorhanden ist. Deshalb musste ich den Befehl mit patchentmux new-session
. Ref github.com/fatso83/dotfiles/commit/…Aus meinem "get.all" -Skript, das ich jeden Morgen aufrufe, um eine Reihe nachfolgender "get.XXX" -Jobs auszuführen und die von mir verfolgte Software zu aktualisieren. Einige von ihnen werden automatisch beendet. Andere erfordern mehr Interaktion, sobald der Vorgang abgeschlossen ist (z. B. die Aufforderung, Emacs zu erstellen).
quelle
Wenn Sie den Bildschirm nur auf zwei Bereiche (z. B. horizontal) aufteilen möchten, können Sie diesen Befehl ausführen (keine tmux- oder Shell-Skripte erforderlich):
Ihr Bildschirm sieht folgendermaßen aus:
quelle
Und so mache ich es:
Ich habe eine Datei für jedes meiner Projekte. Sie können sie auch gruppieren, um einige für die Arbeit zu haben, einige für Hobbyprojekte.
Sie können es auch in einen
~/bin
Ordner verschieben, hinzufügenPATH
und einentmux_my_awesome_project
Namen geben . Dann können Sie es von jedem Ort aus ausführen.quelle
Das funktioniert bei mir. Erstellen von 5 Fenstern mit den angegebenen Namen und automatische Auswahl des
home
Fensters.quelle
Versuchen Sie es mit Bruder , es ist ein Projekt-Bootstrapper.
Es bietet einfache APIs zur Interaktion
tmux
.Es sieht ungefähr so aus:
Um ein Projekt zu starten, müssen Sie nur den folgenden Befehl ausführen:
bro start <project_name>
Im folgenden Screencast erfahren Sie, wie Sie mit
bro
dertmux
API beginnen und sie verwenden .https://user-images.githubusercontent.com/8296449/50532502-2cf3e400-0b6e-11e9-84af-c5f77a04e5cc.gif
quelle
Dafür gibt es ein tmux-Plugin.
Schauen Sie sich tmux-resurrect an
Oder tmux-Kontinuum
quelle
Sie sollten es in Ihrer tmux-Konfigurationsdatei (
~/.tmux.conf
) angeben , zum Beispiel:(Öffnet eine Sitzung mit 2 Fenstern, wobei mocp als erstes und mutt als zweites gestartet wird, und eine weitere getrennte Sitzung mit 3 leeren Fenstern).
quelle
Ich habe dieses Skript erstellt . Es braucht keinen Tmuxinator, Rubin oder andere. Es ist nur ein Bash-Skript, konfigurierbar:
Eine Datei mit dem Namen config sollte ungefähr Folgendes enthalten:
und der Bash-Code sollte sein:
quelle
tmux start_server
startet erstaunlicherweise keinen Server alleine. Siehe github.com/tmux/tmux/issues/182tmuxp unterstützt die Konfiguration von JSON- oder YAML-Sitzungen und eine Python-API. Eine einfache tmuxp-Konfigurationsdatei zum Erstellen einer neuen Sitzung in YAML-Syntax lautet:
quelle
Das Plugin tmux-continuum speichert Ihre tmux-Sitzung automatisch und lädt sie beim nächsten Start von tmux. Es sollte einfacher einzurichten sein als einige der hier verwendeten benutzerdefinierten Skriptlösungen.
Um Ihre Sitzung bei Bedarf zu speichern, können Sie das Plugin tmux-resurrect verwenden . tmux-resurrect ist auch erforderlich, um tmux-continuum auszuführen
quelle
Sie können tmux-Hooks verwenden , um Befehle auszuführen, wenn eine neue Sitzung erstellt wird. Insbesondere wird dies mit dem erreicht
session-created
Haken erreicht.Um den Bildschirm beispielsweise auf drei Arten zu teilen, während htop unten rechts ausgeführt wird, können Sie Ihrer
~/.tmux.conf
Datei die folgende Zeile hinzufügen :Der Vorteil dieser Methode ist, dass Sie tmux nicht auf spezielle Weise ausführen müssen (z. B. Shell-Skript oder Alias), um das gewünschte Ergebnis zu erzielen. Sie können dies auch mit
tmux new-session -A -s mysession
der in dieser anderen Antwort beschriebenen kombinieren sodass die Hook-Befehle nur ausgeführt werden, wenn Sie die Sitzung zum ersten Mal erstellen, und nicht bei nachfolgenden Anhängen.Diese Funktion wurde 2016 von d15d54c2c hinzugefügt . Die erste Version, die sie enthält, ist 2.4.
quelle
Ich habe gerade versucht, alle Ideen auf dieser Seite zu verwenden, und ich mochte keine davon. Ich wollte nur eine Lösung, die tmux mit einem bestimmten Satz von Fenstern startete, als mein Terminal geöffnet wurde. Ich wollte auch, dass es idempotent ist, dh das Öffnen eines neuen Terminalfensters übernimmt die tmux-Sitzung von der vorherigen.
Die oben genannten Lösungen öffnen häufig mehrere tmux-Sitzungen, und ich möchte nur eine. Zuerst habe ich dies zu meinem hinzugefügt
~/.bash_profile
:dann habe ich folgendes zu meinem hinzugefügt
~/.tmux.conf
:Jedes Mal, wenn ich ein Terminal starte oder tmux oder was auch immer starte, verbinde ich mich entweder wieder mit meinem vorhandenen gewünschten Setup (der benannten Sitzung
default
) oder erstelle eine neue Sitzung mit diesem Setup.quelle
tmux start_server
startet ein Server nicht alleine. Siehe github.com/tmux/tmux/issues/182Dieses Skript startet eine Sitzung mit dem Namen "e" und drei Fenstern
quelle