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

vmo*_*eco 4 tmux

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

我可以更改此起始目录,并且此更改将应用​​于整个会话。

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

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

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

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

这对我来说听起来都不实用,我更喜欢在远程计算机上使用单个 tmux 会话。

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

编辑 :

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

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

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

Wol*_*lph 7

这个问题非常类似于: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}"
Run Code Online (Sandbox Code Playgroud)

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

tmux setenv custom_path /home/whatever/some/path
Run Code Online (Sandbox Code Playgroud)

将其放入您的配置中:

bind '"' split-window -c "#{custom_path}"
bind % split-window -h -c "#{custom_path}"
bind c new-window -c "#{custom_path}"
Run Code Online (Sandbox Code Playgroud)