iTerm в 2 профилях

недавно я переключился на iTerm2 и люблю его. Мне интересно, есть ли способ использовать профили, чтобы соответствовать какой среде / конкретной машине вы находитесь.

скажем, если я делаю задачи в одном окне на моем mac, профиль отображается по умолчанию, но если я ssh в машину (скажем, dev0), профиль на iTerm будет обновляться до профиля dev0. Как только я закончу с dev0 и вызову exit, профиль снова переключится на default.

Я понимаю одна из работ заключается в том, чтобы открыть определенный профиль, когда я хочу ssh на другую машину и иметь способ отличить, но если соединение закрыто, это требует, чтобы вы заметили на основе текста, а не говорили фон окна.

это возможно? Если нет, то как можно добавить эту функцию, и есть ли способ внести свой вклад?

5 ответов


iTerm2 поддерживает пользовательский код, который изменяет профиль на лету. Положи в свою .bashrc or .файл.

<esc>]50;SetProfile=X^G

где X-профиль. Например, чтобы изменить профиль на тот, который называется "Foo", нам нужен этот скрипт оболочки:

#!/bin/bash
echo -e "3]50;SetProfile=Foo\a"

чтобы изменить его обратно при выходе из системы, поместите код для изменения профиля обратно по умолчанию в~/.bash_logout по.


последний iTerm2 nightly (Build 2.9.20150329-nightly на момент написания) позволяет сделать это легко. Вы можете скачать его здесь.

после того как вы установили и открыли его:

  1. войдите на свой удаленный компьютер через ssh и нажмите iTerm2 (меню приложения) > Установить Интеграцию Оболочки. Он загрузит скрипт с curl и установить его. сделайте то же самое на вашем местном машина!--12-->.
  2. на предпочтения>профили.
  3. создайте новый профиль для локальной машины. Настройте его в соответствии с вашими потребностями (измените цвет фона, имя и т. д.)
  4. перейти к дополнительно tab и прокрутите вниз.
  5. на Автоматическое Переключение Профилей, нажмите " + " и добавьте имя хоста вашего локального компьютера. Имя хоста-это то, которое вы получаете при запуске echo $HOST на целевая машина. это не всегда тот, который вы видите в вашем приглашении.
  6. создайте другой профиль, на этот раз для удаленной машины, и настройте его.
  7. добавьте имя хоста удаленной машины в Автоматическое Переключение Профилей.
  8. теперь, если вы ssh в удаленную машину, ваш профиль изменится, и если вы exit из сеанса ssh вы вернетесь в свой локальный профиль.

вы можете совместить это решение с @esod по плавно.
Примечание: это не сработало для меня, пока я не создал профиль специально для рабочего стола вместо использования профиля по умолчанию.

посмотреть документация для получения дополнительной информации.


для пользователей zsh

допустим, у вас есть 2 профиля, один по имени mac (для вашей основной машины) и один для linux (удаленной машиной)

при входе в сеанс!--9-->, нам нужно сказать zsh, чтобы загрузить наш профиль

  1. подключение к удаленному linux
  2. на ~/.zshrc добавить echo -e "3]50;SetProfile=linux\a"
  3. источник файлов для немедленного эффекта: source ~/.zshrc
  4. ваш новый тема должна быть видна в сеансе iterm.

при выходе из сессии, нам нужно сказать zsh, чтобы вернуться к нашему исходному профилю

  1. подключение к удаленному linux
  2. в linux ~/.zlogout добавить следующее
if [ "$SHLVL" = 1 ]; then
  echo -e "3]50;SetProfile=mac\a"
  clear
fi

теперь вы можете легко менять профили

если вы используете bash, я считаю, что шаги похожи, но вы бы вместо изменения ~/.bashrc и ~/.bash_logout

демо

demo of session based profiles in iterm2


У меня было такое же желание, и я обнаружил, что это может быть выполнено в iTerm 2 (Build 1.0.0.20130319) в настройках приложения.

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

Профили - > Открытые Профили выберите профиль и нажмите кнопку Изменить профили... Перейдите на вкладку Цвета и выберите предустановку для этого профиля из списка в предустановках загрузки...

далее, я настроил сочетание клавиш для разные профили, поэтому я могу иметь одно окно iTerm, отличное от другого окна. Я сделал это:

  1. создание нового профиля в настройках
  2. создание нового ярлыка профиля в настройках - > клавиши, действие которых-новое окно с профилем

мой профиль по умолчанию имеет черный фон, но иногда это помогает мне иметь белый фон. Я дублирую свой профиль по умолчанию и называю новый профиль DefaultLight. В моем профиле по умолчанию I перейдите на вкладку "клавиши", где я создаю новую комбинацию клавиш профиля, чья комбинация клавиш ^+cmd+n, чье действие-новое окно с профилем и чей профиль-DefaultLight.

после сохранения префренсов cmd+n открывает новое окно с черным фоном и ^+cmd+n открывает новое окно с белым фоном.

есть также Новая вкладка с действием профиля в предпочтении сочетания клавиш, Если вы заинтересованы в принятии этого еще дальше.


в моем случае, мне нужно объединить Yohaï Berreby это с настройкой моих хостов для реализации этой функции.

  1. в автоматическом переключении профиля нажмите " + " и добавьте имя хоста вашего локального компьютера. Имя хоста-это то, которое вы получаете при запуске echo $HOST на целевой машине. Это не всегда тот, который вы видите в вашем приглашении.

мой промежуточный сервер не устанавливает $HOST и имя хоста :

[devel@alveo-staging ~]$ hostname
alveo-staging

но я не могу установить правило с имя alveo-staging. Потому что на самом деле alveo-постановка - это просто псевдоним реального имени хоста (alveo-staging.xxx), который можно установить в /etc/hosts.

таким образом, быстрое решение этого-использовать * подстановочные знаки, чтобы установить правило как *staging*.

тогда это работает.