2016-07-12 85 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设置环境的绝佳篇章。