397 Stimmen

Wie kann ich tmux so einstellen, dass beim Start ein bestimmtes Windows geöffnet wird?

Wie kann ich tmux so einrichten, dass es mit dem angegebenen geöffneten Windows startet?

368voto

Amjith Punkte 21336

Sie können ein kleines Shell-Skript schreiben, das tmux mit den erforderlichen Programmen startet. Ich habe das Folgende in einem Shell-Skript, das ich dev-tmux nenne. Eine Entwicklungsumgebung:

#!/bin/sh
tmux new-session -d 'vim'
tmux split-window -v 'ipython'
tmux split-window -h
tmux new-window 'mutt'
tmux -2 attach-session -d

So kann ich jedes Mal, wenn ich meine bevorzugte Entwicklungsumgebung starten möchte, einfach Folgendes tun

$ dev-tmux

321voto

Afr Punkte 10470

Ich habe versucht, ein komplexes Raster von Fenstern zu erstellen und musste immer wieder zwischen den Fenstern wechseln und sie teilen. Hier sind meine Lektionen:

tmux new-session \;

Beginnt mit einer neuen Sitzung. Um sie horizontal oder vertikal zu teilen, verwenden Sie split-window -h ou -v und dann so:

tmux new-session \; split-window -v \; split-window -h \;

Erzeugt 3 Fenster, etwa so:

------------
|          |
|----------|
|    |     |
------------

Um Befehle in diesen Fenstern auszuführen, fügen Sie sie einfach mit der Option send-keys 'my-command' Befehl und C-m der sie ausführt:

tmux new-session \; \
  send-keys 'tail -f /var/log/monitor.log' C-m \; \
  split-window -v \; \
  split-window -h \; \
  send-keys 'top' C-m \; 

Die resultierende Sitzung sollte dann so aussehen.

------------
|  tail    |
|----------|
|    | top |
------------

Nun habe ich versucht, den unteren linken Bereich erneut zu unterteilen, also entweder mit last-pane oder in komplexeren Windows mit der Option select-pane -t 1 donde 1 ist die Nummer des Fensters in der Reihenfolge, die beginnend mit 0 .

tmux new-session \; \
  send-keys 'tail -f /var/log/monitor.log' C-m \; \
  split-window -v \; \
  split-window -h \; \
  send-keys 'top' C-m \; \
  select-pane -t 1 \; \
  split-window -v \; \
  send-keys 'weechat' C-m \;

Tut das. Grundsätzlich kennen Sie sich aus mit split-window et select-pane ist alles, was Sie brauchen. Es ist auch praktisch, mit -p 75 eine prozentuale Größe des Bereichs, der durch split-window um mehr Kontrolle über die Größe der Fenster zu haben.

tmux new-session \; \
  send-keys 'tail -f /var/log/monitor.log' C-m \; \
  split-window -v -p 75 \; \
  split-window -h -p 30 \; \
  send-keys 'top' C-m \; \
  select-pane -t 1 \; \
  split-window -v \; \
  send-keys 'weechat' C-m \;

Das Ergebnis ist eine Sitzung, die wie folgt aussieht

------------------
|      tail      |
|----------------|
|          | top |
|----------|     |
| weechat  |     |
------------------

Ich hoffe, das hilft tmux Enthusiasten in der Zukunft.

114voto

jasonwryan Punkte 4286

Sie können verschiedene Sitzungen von Ihrem .tmux.conf etwa so:

# initialize sessions
bind S source-file ~/.tmux/session1 
bind s source-file ~/.tmux/session2

Und dann formatieren Sie die Sitzungen so, wie Sie es wünschen:

#session1
new  -s SessionName -n WindowName Command
neww -n foo/bar foo
splitw -v -p 50 -t 0 bar
selectw -t 1 
selectp -t 0

Dadurch würden 2 Fenster geöffnet, von denen das zweite foo/bar hieße und vertikal in zwei Hälften geteilt wäre (50 %), wobei foo über bar verläuft. Der Fokus wäre in Fenster 2 (foo/bar), oberer Bereich (foo).

Sie können dann Ihre bevorzugte tmux-Sitzung (in diesem Fall session1) mit PrefixShifts

64voto

Hamish Downer Punkte 15913

Verwenden Sie tmuxinator - können Sie mehrere Sitzungen konfigurieren und wählen, welche Sie zu einem bestimmten Zeitpunkt starten möchten. Sie können Befehle in bestimmten Fenstern oder Bereichen starten und den Fenstern Titel geben. Hier ist ein Beispiel für die Verwendung bei der Entwicklung von Django-Anwendungen .

Beispiel einer Konfigurationsdatei:

# ~/.tmuxinator/project_name.yml
# you can make as many tabs as you wish...

project_name: Tmuxinator
project_root: ~/code/rails_project
socket_name: foo # Not needed. Remove to use default socket
rvm: 1.9.2@rails_project
pre: sudo /etc/rc.d/mysqld start
tabs:
  - editor:
      layout: main-vertical
      panes:
        - vim
        - #empty, will just run plain bash
        - top
  - shell: git pull
  - database: rails db
  - server: rails s
  - logs: tail -f logs/development.log
  - console: rails c
  - capistrano:
  - server: ssh me@myhost

Eine ausführliche Erklärung finden Sie in der README unter dem obigen Link.

22voto

m_majeres Punkte 261
:~$ tmux new-session "tmux source-file ~/session1"  

Sitzung1

neww
split-window -v 'ipython'  
split-window -h  
new-window 'mutt'  

einen Alias in .bashrc erstellen

:~$ echo `alias tmux_s1='tmux new-session "tmux source-file ~/session1"'` >>~/.bashrc  
:~$ . ~/.bashrc  
:~$ tmux_s1

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X