我用的是iTerm2。我经常将窗格分成两个窗口。当我想更改一个目录中的目录时,我想也自动更改另一个目录中的目录。这可能吗? Tmux 解决方案也将受到欢迎。
答案1
项目2
广播到选项卡中的所有窗格
command+ option+i
广播到所有选项卡中的所有窗格
command+ shift+i
笔记
使用相同的组合键打开/关闭。
从菜单
外壳 > 广播输入
答案2
我还没有使用过 tmux,所以可能有更好的方法来做到这一点。这个答案也是以 bash 为中心的,因为这是我最熟悉的 shell。我确信其他 shell 也有类似的概念,可以对其进行调整。
基本思想是让初始窗口源一个脚本,该脚本设置一个在显示新 shell 提示符之前调用的函数;第二个窗口将获取单独的第二个脚本。每当当前目录发生更改时,第一个脚本的函数就会更新 TMUX_PWD tmux 变量。第二个脚本的函数检查 TMUX_PWD 变量,如果当前目录不同,则更改目录。
主窗口的代码:
function prompt_command_primary {
if [[ "$(tmux showenv TMUX_PWD | cut -d= -f2)" != "$PWD" ]]
then
tmux setenv TMUX_PWD "$PWD"
fi
}
PROMPT_COMMAND='prompt_command_primary'
# initialize it
tmux setenv TMUX_PWD "$PWD"
辅助窗口的代码:
function prompt_command_mirror {
if [[ $(tmux showenv TMUX_PWD | cut -d= -f2) != "$PWD" ]]
then
cd -- "$(tmux showenv TMUX_PWD | cut -d= -f2)"
fi
}
PROMPT_COMMAND='prompt_command_mirror'
# initialize ourselves
prompt_command_mirror
在我看来,这是让第二个窗口基于第一个窗口更改目录的最优雅的方式。