我最近从 gnu-screen 转换到了 tmux。有一件事让我很纠结。
我的工作流程大致如下。我为任何时间点执行的每个“任务”创建一个会话。这样,我就可以通过附加到该会话来处理我正在执行的 N 个任务中的任何一个。
我可以用 screen 做而不能用 tmux 做的事情如下:在不同的窗口中打开/附加同一会话的多个实例并同时处理它们。例如,如果我正在编辑 3 个不同的文件,我可以在同一会话的窗格 1、2 和 3 中打开它们,并让同一会话的每个实例以及这 3 个文件在我面前打开。
我无法强迫 tmux 允许我这样做。每当我连接到 tmux 中现有的附加会话时,它都会复制我在另一个会话上执行的操作。
我希望我已经解释清楚了。如果没有,请告诉我。
答案1
screen -x
我认为你基本上是在问怎么做tmux
?这是一个例子:
# Start a new tmux session (with default session name "0").
tmux
# Start another tmux session (default name "1"), sharing windows with "0".
tmux new-session -t 0
# Start yet another tmux session (default name "2"), sharing windows with "0" (and "1").
tmux new-session -t 0
# Now you can attach to sessions with tmux attach-session -t <0|1|2>.
# Or you can omit the -t, and tmux needs to select the most recently used session, and it will prefer the most recently used unattached session.
如果您不喜欢在创建新会话时使用的默认数字名称,则可以传递-s other_name
其他名称。
答案2
为了实现您所描述的目标,您可能只需要在 tmux ( C-b
+ c) 中使用不同的布局,然后使用 ( C-b
+ )%
和进行拆分,您就可以将任务所需的所有内容放在一个窗格中,然后使用+n(ext) 或 p(revious) 或使用数字进行"
上下文切换。z (oom) 也是您的朋友。C-b
C-b
有趣的是,tmux 和 screen 在处理同一会话的多个视图方面有所不同
- 在 tmux 中,两个视图看到的内容完全相同(这让您可以进行远程结对编程)
- 在屏幕上,您可以在不同的视图中查看不同的终端(这使您可以共享内容但独立工作......这可能对于使用多个显示器在同一个命令行上工作很有用,我只是还没有弄清楚具体如何做!)