Différence entre les options tmux et shell split sur iTerm2?

8

Je suis actuellement passé à iTerm2 + VIM pour mon environnement de développement. J'ai remarqué que la dernière version de iTerm2 prend en charge tmuxet qu'il y avait des gens qui utilisaient tmuxpour diviser la fenêtre en plusieurs sessions. J'ai également remarqué que iTerm2 a des options prêtes à l'emploi pour diviser la fenêtre en plusieurs sessions. Vous pouvez diviser autant de sessions que vous le souhaitez verticalement et horizontalement en utilisant simplement CMD + D par exemple. Il me semble donc que vous pouvez accomplir la même fonctionnalité avec ces options. Je peux me tromper totalement.

Mes questions sont les suivantes: y a-t-il une différence / un avantage à utiliser tmuxles options de fractionnement sur iTerm2?

wonitta
la source

Réponses:

9

si vous fermez iterm2, les obus attachés à cette instance d'iterm2 sont également détruits / fermés. hiérarchie des processus de cette situation:

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

si vous fermez l'iterm2 qui contient tmux , alors tmux et les shells à l'intérieur de cette instance tmux continuent de fonctionner. vous pouvez plus tard rattacher à cette instance tmux (c'est essentiellement la façon dont les gens travaillent sur les serveurs distants au cas où la connexion tombe) et récupérer la situation telle qu'elle était avant de fermer l'iterm2. processus-hiérarchie de cette situation:

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

pour citer directement de tmux :

tmux est un multiplexeur de terminaux: il permet de créer, d'accéder et de contrôler un certain nombre de terminaux (ou fenêtres), chacun exécutant un programme distinct, à partir d'un seul écran. tmux peut être détaché d'un écran et continuer à s'exécuter en arrière-plan, puis réattaché ultérieurement.

un ancien projet fournissant essentiellement la même fonctionnalité est l' écran

akira
la source
Merci akira! c'était ma toute première question sur SU et j'ai reçu une excellente réponse, exactement ce dont j'avais besoin!
wonitta
La hiérarchie des processus n'est-elle pas plus comme: iterm2 > shell > tmux clientet tmux server > shell? Ainsi, lorsque vous fermez iTerm, vous fermez le client tmux mais le serveur est toujours là.
Henrik N
@HenrikN: iTerm2 peut appeler le client tmux "directement". vous obtiendrez le même effet si vous lancez "exec tmux attach" ou quelque chose de similaire. et oui, tmux se compose de 2 parties. mais cette distinction ne permet pas de mieux comprendre pourquoi iterm2-splitting est différent de tmux-splitting, n'est-ce pas?
Akira
@akira Je voulais juste clarifier les choses parce que vous mettez tmux sous iTerm, ce qui rend peut-être plus difficile de voir comment tmux survit lorsque le processus iTerm se termine. Pour moi, la meilleure façon de comprendre cela est de réaliser que le serveur tmux est indépendant d'iTerm (mais pas le client). Mais certainement, le fait que tmux et non iterm possède les shells séparés est un point clé.
Henrik N
2

La réponse acceptée est excellente et c'est ma chose préférée à propos de tmux, mais souvent négligé, plusieurs clients peuvent être connectés à chaque session tmux. Ainsi, un ou plusieurs utilisateurs peuvent se connecter à une session tmux depuis différents ordinateurs et partager les mêmes informations sur la fenêtre.

davidpm4
la source
1

Il existe également maintenant un outil appelé iTermocil qui apporte la fonctionnalité de disposition des fenêtres et des volets et l'exécution de commandes préconfigurées en mode natif sur iTerm.

Avertissement: je suis l'auteur de cet outil (pour la fonctionnalité exacte décrite dans la question).

Tom Anthony
la source