我最喜欢的python开发环境是:
每个pan shoud运行一个python virtualenv(使用virtualenvwrapper)。所以这是我必须键入的用于设置环境的命令列表:
➜ ~ workon some_env
➜ ~ tmux splitw -h -l90
➜ ~ workon some_env
➜ ~ tmux splitw -v -p50
➜ ~ workon some_env
将这些命令放入脚本并获取文件遗憾的是,在同一个平底锅上运行workon some_env
三次而不是在每个平底锅上运行一次。
非常简单,但每次我想设置一个工作环境时输入都很无聊。
我绑定了一个快捷方式来拆分窗口:
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
我尝试了更多异国情调的东西,但在这里我被卡住了。
答案 0 :(得分:4)
首先创建所有窗格。
使用send-keys将命令写入指定的窗格并使用C-m执行它们。例如:
tmux send-keys -t development:0.1 "workon some_env" C-m
如果你有三个窗格,那么第二个和第三个窗格将是SESSION_NAME:0.1
和SESSION_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设置环境的伟大章节。
答案 1 :(得分:0)
我要做的是 我编辑激活脚本并添加
tmux set-environment VIRTUAL_ENV $VIRTUAL_ENV
然后,在激活脚本中有停用功能,我对该功能进行编辑并添加
tmux set-environment -r VIRTUAL_ENV
这样,在我启动venv之后,所有窗口和窗格将在该会话中打开并带有venv。如果我停用,则新窗口将正常打开。