Профили iTerm 2
Недавно я перешел на iTerm2 и люблю его. Я задаюсь вопросом, есть ли способ использовать профили для соответствия той среде/конкретной машине, на которой вы находитесь.
Скажем, если я выполняю задачи в одном окне на моем mac, профиль отображается по умолчанию, но если я ssh в машину (скажем, dev0), профиль на iTerm будет обновляться до профиля dev0. Как только я закончу с dev0 и выйду на вызов, профиль снова переключится на значение по умолчанию.
Я понимаю, что одна работа заключается в том, чтобы открыть конкретный профиль, когда я хочу ssh на другую машину, и у меня есть способ отличить, но если соединение закрыто, вам нужно заметить основанный на тексте текст, а не сказать фон окна.
Возможно ли это? Если нет, то как можно добавить эту функцию, и есть ли способ, которым я могу внести свой вклад?
Ответы
Ответ 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 с настройками моих хостов для реализации этой функции.
- В автоматическом переключении профиля нажмите "+" и добавьте имя хоста вашего локального компьютера. Имя хоста - это тот, который вы получаете при запуске 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