新的 Tmux 窗格转到与当前窗格相同的目录;新的 tmux 窗口转到主目录?

Jus*_* L. 40 tmux

谁能帮我设置这个配置?

如果我创建一个新窗格,新窗格应该在与我刚刚所在的窗格相同的工作目录中开始。如果我创建一个新窗口,新窗口应该在主目录(或任何其他全局默认路径)中开始)。

tmux 1.8 可以实现吗?

mmo*_*oya 71

尝试设置:

bind c new-window -c "#{pane_current_path}"
Run Code Online (Sandbox Code Playgroud)

在我的情况下,新窗格也无法在当前目录中启动。添加-c "#{pane_current_path}"split-window绑定修复了这个问题。例子:

bind c new-window      -c "#{pane_current_path}"
bind | split-window -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"
Run Code Online (Sandbox Code Playgroud)

我在这里找到了pane_current_path诀窍。它也记录在 upstream 中。CHANGES

  • 对我来说, $PWD 不起作用,但 #{pane_current_path} 起作用。 (3认同)
  • 如果你想覆盖 `<prefix>"`,你必须像这样转义双引号:`bind '"' split-window -v -c "#{pane_current_path}"`。希望可以节省一些时间。 (2认同)

小智 8

虽然@mmoya 的答案适用于 tmux 1.9 及更高版本,但早期版本中不存在-cfor 选项new-window。对于早期版本,这需要对default-path. 这是我如何在我的.tmux.conf文件中设置它。

set -g default-path "~"
bind % set default-path "" \; split-window -h \; set -u default-path
bind '"' set default-path "" \; split-window -v \; set -u default-path
Run Code Online (Sandbox Code Playgroud)

这使得new-window命令使用全局default-path. 但是,当将窗口拆分为窗格时,它会使本地default-path覆盖它。