Tmux 拆分 window 并激活一个 python virtualenv
Tmux split window and activate a python virtualenv
我最喜欢的python开发环境是:
- vim
一个大的左平底锅
- 右侧的两个小盘子用于交互式控制台
每个 pan 都应该 运行 一个 python virtualenv(使用 virtualenvwrapper)。所以这里是我必须键入以设置我的环境的命令列表:
➜ ~ workon some_env
➜ ~ tmux splitw -h -l90
➜ ~ workon some_env
➜ ~ tmux splitw -v -p50
➜ ~ workon some_env
不幸的是,将这些命令放在脚本中并获取文件会 运行 workon some_env
在同一个盘上执行三次,而不是在每个盘上执行一次。
非常简单,但每次我想设置工作环境时都打字很无聊。
我绑定了一个快捷方式来拆分 window 正确:
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
我尝试了更多奇特的东西,但我被困在这里。
首先创建所有窗格。
使用发送键将您的命令写入指定的窗格并使用 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 设置环境。
我做的是
我编辑激活脚本并添加
tmux set-environment VIRTUAL_ENV $VIRTUAL_ENV
之后,在激活脚本中有停用功能,我编辑该功能并添加
tmux set-environment -r VIRTUAL_ENV
在我启动 venv all windows 之后,窗格将在该会话中使用 venv 打开。如果我停用新 windows 将正常打开。
我最喜欢的python开发环境是:
- vim 一个大的左平底锅
- 右侧的两个小盘子用于交互式控制台
每个 pan 都应该 运行 一个 python virtualenv(使用 virtualenvwrapper)。所以这里是我必须键入以设置我的环境的命令列表:
➜ ~ workon some_env
➜ ~ tmux splitw -h -l90
➜ ~ workon some_env
➜ ~ tmux splitw -v -p50
➜ ~ workon some_env
不幸的是,将这些命令放在脚本中并获取文件会 运行 workon some_env
在同一个盘上执行三次,而不是在每个盘上执行一次。
非常简单,但每次我想设置工作环境时都打字很无聊。
我绑定了一个快捷方式来拆分 window 正确:
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
我尝试了更多奇特的东西,但我被困在这里。
首先创建所有窗格。
使用发送键将您的命令写入指定的窗格并使用 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 设置环境。
我做的是 我编辑激活脚本并添加
tmux set-environment VIRTUAL_ENV $VIRTUAL_ENV
之后,在激活脚本中有停用功能,我编辑该功能并添加
tmux set-environment -r VIRTUAL_ENV
在我启动 venv all windows 之后,窗格将在该会话中使用 venv 打开。如果我停用新 windows 将正常打开。