Tmux 配置不在新窗口或窗口拆分上保留 PWD

Tmux 配置不在新窗口或窗口拆分上保留 PWD

所以我试图更新我的以反映in 的.tmux.conf file更改。我已将其添加到我的conf中,但不幸的是它不起作用。我的新窗口和窗格总是从以下位置开始:-cnew-window~/

# Saner splitting.
bind v split-window -c $PWD -h
bind s split-window -c $PWD -v

# Autorename sanely.
setw -g automatic-rename on

# Better name management
bind c new-window -c $PWD

我的预期行为是我的新窗格或窗口将位于我之前所在的窗格的目录中。因此,如果我位于 中的窗口 1 中~/Sites/project,我的新窗口也会在那里。

答案1

您使用了错误的示例。 ;)$PWD作为参数-c意味着让新创建的窗格在目录中启动tmux服务器在,换句话说,就是你第一次启动的目录tmux。当前目录窗格是存储在tmux内部变量中的#{pane_current_path}

* 'default-path' has been removed.  The new-window command accepts '-c' to
  cater for this.  The previous value of "." can be replaced with: 'neww -c
  $PWD', the previous value of '' which meant current path of the pane can
  be specified as:  'neww -c "#{pane_current_path}"'

所以做你想做的事情的正确方法是

# Saner splitting.
bind v split-window -c "#{pane_current_path}" -h
bind s split-window -c "#{pane_current_path}" -v

# Autorename sanely.
setw -g automatic-rename on

# Better name management
bind c new-window -c "#{pane_current_path}"

笔记:这会不是如果有其他人的 shell 在您当前的窗格中运行(我对此感到困惑,所以我明确地告诉您):如果您有一个正在运行sudosu会话,您的新窗格将最终得到一个/.这很容易解释:您tmux无法获取正在运行的进程的当前工作目录,因为出于安全原因它没有适当的权限来执行此操作(您无法读取外部用户进程的重要状态)。

相关内容