2016-07-12 12 views
2

Meine Lieblings Python Entwicklungsumgebung ist:tmux geteiltes Fenster und aktivieren ein Python virtualenv

  • Eine große linke Waagschale für vim
  • Zwei kleine Pfannen auf der rechten Seite für interaktive Konsolen

Jede Pfanne sollte ein Python virtualenv (mit virtualenvwrapper) laufen. So, hier ist die Liste der Befehle muss ich mein Setup-Umgebung eingeben:

➜ ~ workon some_env 
➜ ~ tmux splitw -h -l90 
➜ ~ workon some_env 
➜ ~ tmux splitw -v -p50 
➜ ~ workon some_env 

Setzt man diese Befehle in einem Skript und Beschaffung die Datei leider workon some_env dreimal auf der gleichen Pfanne, anstatt einmal auf jeder Pfanne laufen würde.

Ziemlich einfach, aber ziemlich langweilig, jedes Mal, wenn ich eine Arbeitsumgebung einrichten möchte.

gebunden ich eine Verknüpfung aus dem Fenster correcty aufzuspalten:

bind a source-file ~/.config/tmux/dev-session 

Diese Datei enthält dev-session:

splitw -h -l90 
splitw -v -p50 

aber ich bin nicht in der Lage automatisch workon some_env auf jeder Pfanne laufen. Ich habe das Problem in jeder Hinsicht gelöst, ich kann es einfach nicht funktionieren lassen.

splitw "workon some_env" 
# Exits immediately as `workon` function terminates 

splitw "echo 'workon some_env' | source /dev/stdin" 
# Exits immediately as `source` terminates 

splitw "workon_args=some_env zsh -f .some_custom_zshrc" 
# Where .some_custom_zshrc contains: 
# workon $workon_args 
# Does not work since running `workon some_env` from a script 
# has no effect on the script caller 

splitw "zsh -c 'workon some_env' -i" 
# `workon some_env` seems to be executed in a separate environment 
# and the virtualenv is no more activated within the interactive shell 

Ich versuchte noch exotischere Sachen, aber hier bin ich fest.

Antwort

4

Erstellen Sie zuerst alle Ihre Fenster.

Verwenden Sie send-keys, um Ihre Befehle in den angegebenen Bereich zu schreiben und sie mit C-m auszuführen. Zum Beispiel:

tmux send-keys -t development:0.1 "workon some_env" C-m

Wenn Sie drei Bereiche haben, dann wäre das zweite und dritte sein SESSION_NAME:0.1 und SESSION_NAME:0.2

Hier ein Beispiel für meine Konfiguration ist:

tmux new-session -s development -n editor -d 

tmux split-window -h -t development 

tmux select-pane -t development:0.1 

tmux split-window -v -t development 

tmux send-keys -t development:0.0 "emacs -nw" C-m 

tmux send-keys -t development:0.0 f8 

tmux send-keys -t development:0.1 "ptpython" C-m 

This book hat ein großes Kapitel zum Einrichten von Umgebungen mit Tmux.