每个窗口有不同的起始目录?

时间:2017-07-05 21:37:21

标签: tmux

我每天在笔记本电脑上使用tmux(2.5)工作,我的tmux会话有一个起始目录,这是我从tmux会话开始的工作目录。我打开的每个窗格/窗口都以此起始目录作为工作目录开始。

我可以change this starting directory,此更改将适用于整个会话。

但是如果我想处理具有多个窗格的不同项目,我可以启动一个新窗口,但是我在其中打开的每个窗格都将从会话的起始目录开始:我必须{{ 1}}到每个窗格的新位置,这是不切实际的。

如果我需要同时处理多个项目/目录,我可以启动一个新的终端会话,然后cd到相关的目录/项目并启动一个新的tmux会话。这并不复杂。

但如果我想通过cd在服务器上做同样的事情,我需要:

  • 打开一个新的ssh会话。
  • 将我的远程tmux会话嵌入到另一个tmux会话中。

对我来说听起来不实用,我更喜欢远程机器上的单个tmux会话。

我认为能够使用自己的起始目录位置启动新窗口会更方便,该目标位置适用于在其中打开的任何新窗格。有没有办法实现这个目标?

编辑:

我已经尝试了ssh命令的-c参数。

但它没有将其起始目录分配给以这种方式创建的窗口,它只将此自定义起始目录应用于创建的第一个窗格。

在此窗口中打开的任何新窗格都将会话的起始目录用作默认工作目录(而不是传递给tmux new-window的路径)。

2 个答案:

答案 0 :(得分:3)

此问题非常类似于:https://unix.stackexchange.com/questions/12032/create-new-window-with-current-directory-in-tmux

这取决于您的tmux版本,但-c参数确实可以解决问题,但它不记得该设置。曾经有一个default-path设置,但遗憾的是在版本1.9中已将其删除。

对于较新版本,您需要在所有情况下传递-c(如果手动执行该命令,则可以使用别名),或者如果使用键绑定,则需要重新绑定分割/新窗口键

bind '"' split-window -c "#{pane_current_path}"
bind % split-window -h -c "#{pane_current_path}"
bind c new-window -c "#{pane_current_path}"

要使用自定义路径而不是当前窗格路径,请执行以下命令:

tmux setenv custom_path /home/whatever/some/path

把它放在你的配置中:

bind '"' split-window -c "#{custom_path}"
bind % split-window -h -c "#{custom_path}"
bind c new-window -c "#{custom_path}"

答案 1 :(得分:1)

是的,事实证明-c命令的new-window选项正是您所寻找的:https://unix.stackexchange.com/questions/12032/create-new-window-with-current-directory-in-tmux此外,https://unix.stackexchange.com/questions/101949/new-tmux-panes-go-to-the-same-directory-as-the-current-pane-new-tmux-windows-go

因此,你的tmux会话中的任何tmux new-window -c $(pwd)tmux new-window -c /path/to/dir都应该这样做。