Разница между tmux и опциями разбиения оболочки на iTerm2?

8

В настоящее время я переключился на iTerm2 + VIM для моей среды разработки. Я заметил, что последняя версия iTerm2 поддерживает, tmuxи были люди, которые использовали tmuxдля разделения окна на несколько сессий. Я также заметил, что iTerm2 имеет встроенные опции для разделения окна на несколько сессий. Вы можете разделить столько сессий, сколько хотите по вертикали и горизонтали, просто используя CMD + D, например. Поэтому мне кажется, что вы можете выполнить те же функции с этими параметрами. Я могу быть совершенно не прав.

Мои вопросы: есть ли разница / польза от использования tmuxопций разделения на iTerm2?

wonitta
источник

Ответы:

9

если вы закроете iterm2, то оболочки, прикрепленные к этому экземпляру iterm2, также будут уничтожены / закрыты. процессная ситуация в этой ситуации:

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

если вы закроете iterm2, который содержит tmux , то tmux и оболочки внутри этого экземпляра tmux продолжат работу. позже вы можете подключиться к этому экземпляру tmux (по сути, именно так люди работают на удаленных серверах в случае разрыва соединения) и вернуться к ситуации, которая была до закрытия iterm2. Процесс-иерархия этой ситуации:

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

цитировать из tmux напрямую:

tmux - это мультиплексор терминалов: он позволяет создавать на одном экране несколько терминалов (или окон), каждый из которых выполняет отдельную программу, доступ к ним и управление ими. tmux может быть отсоединен от экрана и продолжать работать в фоновом режиме, а затем снова подключен.

более старый проект, обеспечивающий в основном ту же функциональность, - экран

Акира
источник
Спасибо Акира! это был мой самый первый вопрос по SU и был получен отличный ответ, именно то, что мне было нужно!
Wonitta
Разве иерархия процессов больше не похожа на: iterm2 > shell > tmux clientа tmux server > shell? Поэтому, когда вы закрываете iTerm, вы закрываете клиент tmux, но сервер все еще работает.
Хенрик Н
@HenrikN: iTerm2 может вызвать tmux-клиент «напрямую». вы получите тот же эффект, если вы запустите exec tmux attach или что-то подобное. и да, tmux состоит из 2 частей. но это различие не улучшает понимание того, почему iterm2-расщепление отличается от tmux-расщепления, не так ли?
Акира
@akira Я просто хотел это прояснить, потому что вы положили tmux под iTerm, что, возможно, затрудняет понимание того, как tmux выживает, когда завершается процесс iTerm. Для меня лучший способ понять это - понять, что сервер tmux не зависит от iTerm (а клиент - нет). Но, конечно же, тот факт, что tmux, а не iterm владеет разделенными оболочками, является ключевым моментом.
Henrik N
2

Принятый ответ хорош и является моей любимой вещью в tmux, но часто упускается из виду, что к каждому сеансу tmux можно подключить несколько клиентов. Таким образом, один или несколько пользователей могут подключаться к сеансу tmux с разных компьютеров, и они совместно используют одну и ту же информацию в окне.

davidpm4
источник
1

Теперь также существует инструмент под названием iTermocil, который предоставляет функциональность для размещения окон и панелей, а также запуска предварительно настроенных команд непосредственно в iTerm.

Отказ от ответственности: я являюсь автором этого инструмента (для точной функциональности, описанной в вопросе).

Том Энтони
источник