Подтвердить что ты не робот

Профили iTerm 2

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

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

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

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

4b9b3361

Ответ 1

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

<esc>]50;SetProfile=X^G

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

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

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

Ответ 2

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

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

  • Войдите на свой удаленный компьютер через ssh и нажмите iTerm2 (меню приложения) > Установить интеграцию с оболочкой. Он загрузит script с помощью curl и установит его. Сделайте то же самое на локальном компьютере.
  • Перейдите в Настройки > Профили.
  • Создайте новый профиль для вашей локальной машины. Настройте его в соответствии с вашими потребностями (измените цвет фона, имя и т.д.).
  • Перейдите на вкладку Дополнительно и прокрутите страницу вниз.
  • В Автоматическое переключение профилей нажмите "+" и добавьте имя хоста вашей локальной машины. Имя хоста - это тот, который вы получаете при запуске echo $HOST на целевой машине. Это не всегда тот, который вы видите в своем приглашении.
  • Создайте еще один профиль, на этот раз для удаленной машины и настройте его.
  • Добавьте имя хоста удаленного компьютера в Автоматическое переключение профиля.
  • Теперь, если вы ssh на удаленном компьютере, ваш профиль изменится, и если вы exit выйдете из сеанса ssh, вы вернетесь к своему локальному профилю.

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

Подробнее см. документацию.

Ответ 3

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

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

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

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

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

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

теперь вы можете легко обмениваться профилями < 3.

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

демо

demo of session based profiles in iterm2

Ответ 4

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

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

Профили → Открытые профили выберите профиль и нажмите "Редактировать профили"... Перейдите на вкладку "Цвета" и выберите предустановку для этого профиля в списке "Загрузка пресетов"...

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

  • Создание нового профиля в настройках
  • Создание нового ключа быстрого доступа к профилю в настройках- > Ключи, действие которых - новое окно с профилем

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

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

Также есть вкладка "Новая вкладка с профилем" в разделе "Горячие клавиши клавиатуры", если вы заинтересованы в ее дальнейшем продвижении.

Ответ 5

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

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

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

[[email protected] ~]$ hostname
alveo-staging

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

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

Затем он работает.

Ответ 6

шаг 1:

настроить свой профиль iterm, например, dark, light

шаг 2:

добавьте код прежде в свой профиль оболочки, например .bashrc or.zshrc

# Change iterm2 profile. Usage it2prof ProfileName (case sensitive)
it2prof() { echo -e "\033]50;SetProfile=$1\a" }

шаг 3:

смысл вашего профиля

exec $SHELL -l

шаг 4:

переключить свой профиль темы iterm

it2prof dark
it2prof light