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

Tmux 每个窗口的起始目录不同?,tmux,Tmux,我每天使用笔记本电脑上的tmux(2.5)来工作,我的tmux会话有一个起始目录,它是我启动tmux会话的工作目录。我打开的每个窗格/窗口都以此起始目录作为工作目录开始 我可以,这一变化将适用于整个会议 但是,如果我想使用多个窗格处理不同的项目,我可以启动一个新窗口,但我将在其中打开的每个窗格都将从会话的起始目录开始:我必须cd到每个窗格的新位置,这是不实际的 如果我需要同时处理多个项目/目录,我可以启动一个新的终端会话,然后cd到相关的目录/项目并启动一个新的tmux会话。这并不复杂 但是,如

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

我可以,这一变化将适用于整个会议

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

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

但是,如果我想通过ssh在服务器上执行相同的操作,我需要:

  • 打开一个新的ssh会话
  • 将我的远程tmux会话嵌入到其他tmux会话中
这两种方法对我来说都不实用,我更喜欢远程机器上的单个tmux会话

我认为,如果能够用自己的起始目录位置启动新窗口,它将应用于在其中打开的任何新窗格,这将更加方便。有没有办法做到这一点?

编辑:

我已经尝试了
tmux new window
命令的
-c
参数

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


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

是的,
new window
命令的
-c
选项就是您要查找的:另外,这:


因此,tmux会话中的
tmux新窗口-c$(pwd)
tmux新窗口-c/path/to/dir
中的任何一个都应该这样做。

这个问题非常类似于:

这取决于您的tmux版本,但
-c
参数确实起作用,但它不记得设置。以前有一个
默认路径
设置,但不幸的是,该设置在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}"

我已经尝试过了,但是指定的路径只适用于创建的第一个窗格。使用会话的起始目录创建任何新窗格。它不会将自己的起始目录分配给新窗口。勘误表:一种为新窗格使用当前工作目录的方法可以做到这一点。我正在考虑这一点并研究您链接的引用。它不会使用当前窗格的工作目录而不是分配给当前窗口的起始目录吗?但这可能是一个可接受的替代方案。@vmonteco是的,如果您希望维护分配的目录,我认为您需要将其分配给某个环境变量。我仍在尝试(我也希望如此),但还没有找到有效的解决方案yet@vmonteco我已经更新了答案,包括两个选项:)谢谢,但是,这第二种解决方案不会与更改默认起始目录相同吗?@vmonteco除非使用
setenv-g
进行全局设置,否则设置应该是特定于会话的,以下是手册供参考: