当我在 tmux 中创建多个会话时,后续会话中每个新窗口的当前目录都设置为第一个的当前目录。
例如:
-> cd /home/one && tmux new-session -n one\; new-window -n two
# /home/one is the current directory for each window
-> cd /home/two && tmux new-session -n three\; new-window -n four #\; etc.
# "/home/two" is the current directory for the window "three"
# but for the window "four" and other created windows it is "/home/one"
Run Code Online (Sandbox Code Playgroud)
如何强制 tmux 将后续会话中每个新窗口的当前目录设置为创建会话的目录?
多路复用器 1.6
zsh 4.3
Dav*_*hop 22
从 tmux 1.9 开始, default-path 选项已被删除。
您可以使用以下命令在会话打开的目录中打开(名称中的“客户端”会向我表明它是当前在您的 shell 中运行的 tmux,但在会话之间切换时似乎会切换路径同一个客户):
bind-key c new-window -c "#{client_cwd}"
Run Code Online (Sandbox Code Playgroud)
否则复制当前窗格的路径:
bind-key c new-window -c "#{pane_current_path}"
Run Code Online (Sandbox Code Playgroud)
还有可能对某些工作流程有吸引力的 pane_start_path。
bind-key c new-window -c "#{pane_start_path}"
Run Code Online (Sandbox Code Playgroud)
对于拆分窗口命令。
bind-key % split-window -h -c "#{pane_current_path}"
bind-key '"' split-window -c "#{pane_current_path}"
Run Code Online (Sandbox Code Playgroud)
小智 0
这里有很多答案:https://unix.stackexchange.com/questions/12032/create-new-window-with-current-directory-in-tmux
总之:
从 tmux FAQ 中,一种钝的(但非常通用且相当独立于 shell 的)方式:
- 如何在与当前窗口相同的目录中打开一个新窗口?
一种选择是仅在窗口中运行“TMUX= tmux”。但是,这仅在没有命令运行时才有效,以便您可以输入命令。
解决方法是通过环境变量让 tmux 了解当前路径。为此,请使用以下命令:
Run Code Online (Sandbox Code Playgroud)[ -n "$TMUX" ] && tmux setenv TMUXPWD_$(tmux display -p "#I") $PWD它将 TMUXPWD_i (其中 i 是当前窗口的编号)设置为当前目录的路径。该命令可以添加到PS1中,例如:
Run Code Online (Sandbox Code Playgroud)PS1='$([ -n "$TMUX" ] && tmux setenv TMUXPWD_$(tmux display -p "#I") $PWD)\h$ '创建新窗口时,应要求 shell 更改目录。您可以定义一个新的绑定(例如,如果使用 GNU bash):
Run Code Online (Sandbox Code Playgroud)bind-key C-c run-shell 'tmux neww "cd $(tmux display -p "\$TMUXPWD_#I"); exec bash"'即使命令当前正在终端中运行,此解决方案也将起作用,但它不会在刚刚与另一个窗口交换的窗口中起作用,因为 TMUXPWD_i 在交换后不会更新。但是,一旦显示新提示,TMUXPWD_i 就会正确更新。
只需根据您的情况替换对 shell 的调用即可。
另外,显然较新版本的 tmux 已经通过命令解决了这个问题
tmux 新窗口
旧版本据称可以这样工作:
呼叫
tmux 新w
从你的 shell 中将在该目录中打开 tmux。
如果您希望能够从 tmux 中的当前工作目录打开新窗口或窗格,那么您应该:
tmux 设置选项默认路径“$PWD”