2016-07-12 29 views
2

我最喜歡蟒蛇的研究與開發環境是:TMUX分割窗口並激活蟒蛇VIRTUALENV

  • 一個大左平移了VIM
  • 兩個在交互式遊戲機

每個盤子的右邊的小平底鍋應該運行一個python virtualenv(使用virtualenvwrapper)。因此,這裏是我必須輸入設置我的環境命令的列表:

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

在腳本中把這些命令和採購文件將不幸在同一個平底鍋,而不是一次對每個盤運行workon some_env三次。

很簡單,但每次我想要設置一個工作環境時都很無聊。

我必然的快捷方式分割窗口correcty:

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

此文件包含dev-session

splitw -h -l90 
splitw -v -p50 

不過,我無法在每個盤自動運行workon some_env。我以各種方式解決了這個問題,但我無法完成工作。

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 

我嘗試了更奇特的東西,但在這裏我卡住了。

回答

4

首先創建所有窗格。

使用send-keys將命令寫入指定窗格並使用C-m執行它們。例如:

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

如果你有三個窗格,然後第二個和第三個是SESSION_NAME:0.1SESSION_NAME:0.2

這裏是我的配置的一個例子:

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有使用Tmux設置環境的絕佳篇章。