Perfiles iTerm 2


Recientemente he cambiado a iTerm2 y me encanta. Sin embargo, me pregunto si hay una manera de usar perfiles para corresponder a qué entorno/máquina específica se encuentra.

Digamos que si estoy haciendo tareas en una ventana en mi mac el perfil se muestra por defecto, pero si me ssh en una máquina (digamos dev0), el perfil en iTerm se actualizará a profile dev0. Una vez que haya terminado con dev0 y call exit, el perfil cambiará a predeterminado nuevamente.

Me doy cuenta de un trabajo alrededor es abrir un perfil específico cada vez que quiero ssh en otra máquina y tener una manera de distinguir, pero si la conexión se cierra requiere que usted observe basado en el texto en lugar de decir el fondo de la ventana.

Es esto posible? Si no, ¿cómo se puede agregar esta función, y hay alguna manera de contribuir?

 37
Author: Miles McCrocklin, 2011-12-22

5 answers

ITerm2 admite un código de escape personalizado que cambia el perfil sobre la marcha. Ponlo en tu .bashrc or .bash_profile.

<esc>]50;SetProfile=X^G

Donde X es el perfil. Por ejemplo, para cambiar el perfil a uno llamado "Foo", usemos este script de shell:

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

Para volver a cambiarlo cuando cierre sesión, ponga el código para volver a cambiar el perfil a predeterminado en ~/.bash_logout.

 50
Author: George,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-08-06 14:17:15

El último iTerm2 nightly (Build 2.9.20150329-nightly en el momento de escribir) te permite hacerlo fácilmente. Puede descargarlo aquí.

Una vez instalado y abierto:

  1. Inicie sesión en su máquina remota a través de ssh y haga clic en iTerm2 (el menú de la aplicación) > Instalar la integración de shell. Descargará un script con curl e instalarlo. Haga lo mismo en su máquina local.
  2. Vaya a Preferencias > Perfiles.
  3. Cree un nuevo perfil para su máquina local. Personalícelo para que se ajuste a sus necesidades (cambiar el color de fondo, nombre, etc.)
  4. Vaya a la pestaña Avanzado y desplácese hasta la parte inferior.
  5. En Cambio automático de perfil, haga clic en '+' y agregue el nombre de host de su máquina local. El nombre de host es el que se obtiene cuando se ejecuta echo $HOST en la máquina de destino. No siempre es el que ves en tu prompt.
  6. Crear otro perfil, esta vez para su máquina remota, y personalícelo.
  7. Agregue el nombre de host de la máquina remota en Cambio automático de perfil.
  8. Ahora, si ssh entra en la máquina remota, su perfil cambiará, y si exit sale de la sesión ssh, volverá a su perfil local.

Puede combinar esta solución con la respuesta de@esod sin problemas.
Nota: no funcionó para mí hasta que creé un perfil específicamente para el escritorio en lugar de usar el perfil predeterminado.

Ver la documentación para más información.

 11
Author: Yohaï Berreby,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:33:13

Para usuarios de zsh

Digamos que tiene 2 perfiles, uno llamado mac (para su máquina principal) y uno para linux (su máquina remota)

Al entrar en la sesión , necesitamos decirle a zsh que cargue nuestro perfil

  1. conectarse a linux remoto
  2. en ~/.zshrc añádase echo -e "\033]50;SetProfile=linux\a"
  3. fuente de sus archivos para efecto inmediato: source ~/.zshrc
  4. su nuevo tema debe ser visible dentro de la iterm sesión.

Cuando al salir de la sesión , necesitamos decirle a zsh que vuelva a nuestro perfil original

  1. conectarse a linux remoto
  2. en linux ~/.zlogout agregue lo siguiente
if [ "$SHLVL" = 1 ]; then
  echo -e "\033]50;SetProfile=mac\a"
  clear
fi

Ahora puede intercambiar perfiles con facilidad

Si está utilizando bash, creo que los pasos son similares, pero en su lugar modificaría ~/.bashrc y ~/.bash_logout

Demo

demostración de perfiles basados en sesiones en iterm2

 8
Author: lfender6445,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-06 23:57:34

Tenía este mismo deseo y encontré que esto se puede lograr en iTerm 2 (Build 1.0.0.20130319) en las preferencias de la aplicación.

Puede asignar un perfil (digamos un perfil remoto) con un preset diferente a su preset predeterminado yendo a:

Perfiles - > Abrir perfiles seleccione el perfil y haga clic en Editar perfiles... Vaya a la pestaña Colores y elija un valor predefinido para este perfil de la lista en Cargar valores predefinidos...

Además, he configurado el atajo de teclas para diferentes perfiles Puedo hacer que una ventana iTerm se vea diferente a otra ventana. Hice esto por:

  1. Crear un nuevo perfil en Preferencias
  2. Crear una nueva Tecla de acceso directo de Perfil en Preferencias - > Teclas cuya acción es Nueva Ventana con Perfil

Mi perfil predeterminado tiene un fondo negro, pero a veces me ayuda tener un fondo blanco. He duplicado mi perfil Predeterminado y el nombre del nuevo perfil DefaultLight. En mi perfil predeterminado voy a la pestaña Claves donde creo un nuevo Tecla de método abreviado Perfil cuyo Método abreviado de teclado es ^ + cmd + n, cuya acción es Nueva Ventana con Perfil, y cuyo Perfil es DefaultLight.

Después de guardar las preferencias, cmd+n abre una nueva ventana con un fondo negro y ^+cmd+n abre una nueva ventana con un fondo blanco.

También hay una Nueva Pestaña con acción de Perfil en la Preferencia de Teclas de método abreviado del teclado si está interesado en llevar esto aún más lejos.

 0
Author: esod,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-04-01 13:39:49

En mi caso, necesito combinar La respuesta de Yohaï Berreby con la configuración de mis hosts para implementar esta característica.

  1. En Cambio automático de perfil, haga clic en '+' y agregue el nombre de host de su máquina local. El nombre de host es el que se obtiene al ejecutar echo HOST HOST en la máquina de destino. No siempre es el que ves en tu mensaje.

Mi servidor de ensayo no establece HOST HOST y el nombre de host es:

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

Pero no puedo establecer la regla con nombre de host como alveo-staging. Porque de hecho alveo-staging es solo un alias del nombre de host real (alveo-staging.xxx), que se puede establecer en /etc/hosts.

Así que la solución rápida a esto es usar comodines*, para establecer la regla como *staging*.

Entonces funciona.

 0
Author: karl li,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-09 08:00:27