iTerm2上的tmux和shell拆分选项之间的区别?


8

我目前在我的开发环境中切换到iTerm2 + VIM。我注意到iTerm2的最新版本支持tmux,有人用它tmux来将窗口分成几个会话。我还注意到,iTerm2具有开箱即用的选项,可以将窗口分为多个会话。例如,仅使用CMD + D,就可以在垂直和水平方向上拆分任意数量的会话。因此,在我看来,您可以使用这些选项来完成相同的功能。我可能完全错了。

我的问题是:使用tmuxiTerm2上的拆分选项是否有区别/好处?

Answers:


9

如果关闭iterm2,则连接到该iterm2实例的外壳也会被破坏/关闭。这种情况的过程层次:

iterm2
  +---- shell
  +---- shell
  +---- shell

如果关闭保存tmux的iterm2 ,则tmux和该tmux实例中的外壳将继续运行。您以后可以重新附加到该tmux实例(从本质上讲,这是伙计们在远程服务器上工作的方式,以防连接断开)并恢复到关闭iterm2之前的状态。这种情况的流程层次结构:

iterm2
  +---- tmux
          +---- shell
          +---- shell
          +---- shell

直接引用tmux

tmux是一个终端多路复用器:它使多个终端(或窗口)能够在单个屏幕上创建,访问和控制,每个终端(或窗口)运行一个单独的程序。tmux可能会从屏幕上脱离并继续在后台运行,然后再重新连接。

屏幕提供基本相同功能的旧项目是屏幕


谢谢akira!那是我关于SU的第一个问题,得到了一个很好的答案,正是我所需要的!
温尼塔

流程层次结构不是更像:iterm2 > shell > tmux clienttmux server > shell吗?因此,当您关闭iTerm时,您关闭了tmux客户端,但服务器仍在附近。
Henrik N

@HenrikN:iTerm2可以直接将tmux客户端称为“ tmux-client”。如果启动“ exec tmux attach”或类似的命令,您将获得相同的效果。是的,tmux由两部分组成。但是这种区别并不能改善对为什么iterm2拆分与tmux拆分不同的理解,是吗?
akira 2012年

@akira我只是想清除它,因为您将tmux放在了iTerm下,这可能使得当iTerm进程退出时,很难看清tmux的生存方式。对我而言,了解这一点的最佳方法是认识到tmux服务器独立于iTerm(但客户端不是)。但是可以肯定的是,tmux而非iterm拥有分离的外壳是一个关键点。
Henrik N

2

接受的答案很好,是我对tmux的最爱,但经常被忽略的是,每个tmux会话可以连接多个客户端。因此,一个或多个用户可以从不同的计算机连接到tmux会话,并且他们在窗口上共享相同的信息。


1

现在,还有一个名为iTermocil的工具,该工具具有对窗口和窗格进行布局以及在iTerm上本地运行预配置命令的功能。

免责声明:我是这个工具的作者(针对问题中所述的确切功能)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.