Pregunta Con Bash + iTerm2, ¿cómo nombrar las pestañas?


En iTerm2 (Build 1.0.0.20120203), normalmente abro varias pestañas, cada una de las cuales tiene paneles divididos, y trata sobre un tema de trabajo en particular, por ejemplo, control de revisión, codificación, administración de archivos, trabajo de terminal mysql. Por lo general, necesito cambiar entre 5 o más pestañas en mi flujo de trabajo. A veces es difícil recordar o decir cuál es cuál mirando el contenido de la pantalla. Me gustaría nombrar las pestañas de alguna manera, así puedo saber rápidamente cuál es cuál mirando rápidamente. es posible?


152


origen


posible duplicado de Cambie los títulos de ventana y pestaña iTerm2 en zsh - Daniel Beck♦
No completamente duplicado. Entonces, ¿cómo agregar la aplicación que se está ejecutando actualmente como parte del título de la pestaña? Es decir. ¿Qué pestaña ejecuta emacs, mysql, etc.? - qazwsx
Es decir. todas mis pestañas tienen el mismo host y usuario. Entonces usarlos no diferenciará mis pestañas. - qazwsx
Quieres decir que quieres Mostrar el nombre del trabajo actual de las preferencias de iTerm? Tenga en cuenta que el tema vinculado no es sobre el nombre de usuario o el host. - Daniel Beck♦
Correcto, quiero mostrar alguna indicación de qué programa se está ejecutando o se ejecutó en cada pestaña. Además, la solución dada en la otra publicación no funciona para Bash + iTerm2. - qazwsx


Respuestas:


Como está utilizando iterm2 en un Mac, otra opción es presionar Cmd-I, escribir algo y pulsar Escape.

La solución del terminal es un poco más rápida que esto, pero solo quería que supieras.


182



Esto funciona por un segundo hasta que emita un retorno en la pestaña que he cambiado de nombre. - Stewie
@Stewie En Preferencias -> Perfiles -> Terminal, desmarque "Permitir que el terminal informe el título de la ventana". - Max Cantor
No está marcado. Todavía cambia el nombre del título. - Stewie
@SteveBennett no es el "tema" (en realidad, el término es "perfil"); el comando CMD + I es "Editar sesión actual ..." (en el menú Ver), por lo que solo está cambiando la instancia del perfil de esa pestaña. Hitting Escape simplemente cierra la ventana, que es necesaria ya que esa ventana no tiene un botón "guardar". - MidnightLightning
¿Qué pasa si tienes varios paneles abiertos? ¿Tiene que cambiar el nombre de cada uno para nombrar por completo la pestaña en sí? - theicfire


He encontrado la siguiente función, colocada en mi ~/.bashrc ser de ayuda:

function title {
    echo -ne "\033]0;"$*"\007"
}

Entonces puedo llamarlo desde mi prompt bash de la siguiente manera:

> title I want a pony!

Y mi pestaña se titula en consecuencia.


105



Intenté esto, pero todavía no funciona. Puse esta definición en bash_aliases, y tenerlo cargado en .profile (if [ -f ${HOME}/.bash_aliases ]; then . ${HOME}/.bash_aliases fi) Pero entonces title dog no convirtió el título de la pestaña en "perro" - qazwsx
+1 - Agregué el mío a / etc / profile porque ahí es donde están mis alias ... no olvides encontrar el archivo una vez que hayas terminado. Nota: esto también funciona en la terminal. - blak3r
Muy útil. Yo quería un pony; ¡y tengo uno! - SoEzPz
Puse el mío en .bash_profile, reinicié y funcionó como un hechizo. - C Johnson
funciona para zsh también - Sagar Jauhari


ejecuta este comando para configurar el título de tu pestaña o ventana:

export PROMPT_COMMAND='echo -ne "\033]0;YOUR NAME HERE\007"'

He agregado lo siguiente a mi ~/.bash_profile para siempre enumerar el directorio actual relativo a mi directorio de inicio:

export PROMPT_COMMAND='echo -ne "\033]0;${PWD/#$HOME/~}\007"'

útil cuando tienes 100 terminales minimizados en tu muelle

punta de sombrero para Mac World


40



¡Trabajos! Solo tenga en cuenta que se pueden cargar .bashrc o .bash_profiles y no ambos juntos. Ya tenía un archivo .bash_profiles, así que tuve que pegarlo en este archivo. Gracias. - therealmarv
¡Oh gracias! He actualizado la respuesta para que coincida con esto. Tengo "source ~ / .bashrc" en mi .bash_profile y olvido que esto no es común - schpet


Agregue esta función a su ~/.bash_profile archivo y debería funcionar.

function title ()
{
    TITLE=$*;
    export PROMPT_COMMAND='echo -ne "\033]0;$TITLE\007"'
}

15





Utilicé soluciones similares a la anterior durante bastante tiempo, pero uso suficientes pestañas que también quiero codificar con colores para una fácil referencia visual. Así que aumenté tabset, una utilidad para establecer el título de la pestaña, la insignia y el color en función del tipo de trabajo que estoy haciendo en cada pestaña.

example

Requiere nodo, pero ahora es una plataforma comúnmente instalada. Instalar:

npm install -g iterm2-tab-set

11



¡Esto es asombroso! Me encanta especialmente la configuración automática del color de la pestaña. ¡Gracias! - Ashutosh Jindal


Me gusta este:

#setup terminal tab title
function title {
    if [ "$1" ]
    then
        unset PROMPT_COMMAND
        echo -ne "\033]0;${*}\007"
    else
        export PROMPT_COMMAND='echo -ne "\033]0;${PWD/#$HOME/~}\007"'
    fi
}
title

Le permitirá alternar el nombre de una pestaña entre un nombre personalizado y un valor predeterminado de su CWD.

title -> su título de pestaña será ~/YOUR_CWD/

title hey there -> su título de pestaña será hey there


6



Tenga en cuenta que tal como está, esto será clobber integración iTerm shell. - Michael


de verdad me gusta la respuesta de taylorstine, pero rompe el iTerm2 integración de shell que se basa en el PROMPT_COMMAND variable. Puede modificar el código de Taylor para corregir esto agregando el __bp_precmd_invoke_cmd de vuelta al PROMPT_COMMAND cada vez que juegues con eso:

# iTerm2 shell integration
test -e "${HOME}/.iterm2_shell_integration.bash" && source "${HOME}/.iterm2_shell_integration.bash"

# iTerm2 tab titles
function title {
    if [ "$1" ]
    then
        export PROMPT_COMMAND='__bp_precmd_invoke_cmd'
        echo -ne "\033]0;${*}\007"
    else
        export PROMPT_COMMAND='echo -ne "\033]0;${PWD/#$HOME/\~}\007";__bp_precmd_invoke_cmd'
    fi
}
title

4





me gusta Michael responder.

Pero que si .iterm2_shell_integration.bash ¿no existe?

Aquí está mi opinión:

# iTerm2 shell integration
test -e "${HOME}/.iterm2_shell_integration.bash" && source "${HOME}/.iterm2_shell_integration.bash"

# iTerm2 tab titles
function title {
  if [ "$1" ] ; then
    test -e "${HOME}/.iterm2_shell_integration.bash" \
      && export PROMPT_COMMAND='iterm2_preexec_invoke_cmd' \
      || unset PROMPT_COMMAND
    echo -ne "\033]0;${*}\007"
  else
    test -e "${HOME}/.iterm2_shell_integration.bash" \
      && export PROMPT_COMMAND='echo -ne "\033]0;${PWD/#$HOME/~}\007";iterm2_preexec_invoke_cmd' \
      || export PROMPT_COMMAND='echo -ne "\033]0;${PWD/#$HOME/~}\007"'
  fi
}
title

3



Tenga en cuenta que en v3.1, iterm2_preexec_invoke_cmd se ha convertido __bp_precmd_invoke_cmd - Michael


Si está trabajando con Perfiles (lo cual es muy conveniente): Preferencias -> Apariencia -> Títulos de ventana y pestaña: marque 'Mostrar nombre de perfil':

image

Así es como se ve:

thumbnail linked to main image


2





creo Cambio automático de perfil y Insignias están diseñados exactamente para lo que necesita:

Cambio automático de perfil iTerm2 puede usar información que conoce acerca de su ruta actual, nombre de host y nombre de usuario para cambiar los perfiles. Por ejemplo, el color de fondo de su ventana o la codificación de caracteres del terminal podrían cambiar al conectarse a diferentes hosts.

Insignias   Puede colocar una insignia en la parte superior derecha de su terminal que muestre información sobre la sesión actual. Puede mostrar su nombre de usuario, nombre de host o incluso datos personalizados como la rama actual de git.

por lo que el resultado puede ser así:

enter image description here


0



Indique las partes esenciales de la respuesta del (los) enlace (s) de referencia, ya que la respuesta puede quedar invalidada si las páginas vinculadas cambian. - DavidPostill♦