Pantalla GNU: cambio de nombre de ventana nueva

20

Puedo cambiar el nombre de una ventana con Ctrl-a Shift-a. En lugar de editar a mano varios nombres de ventanas, ¿hay alguna forma de nombrarlos automáticamente después del directorio actual?

liewl
fuente
¿Qué caparazón usas?
marco
Estoy usando bash
liewl

Respuestas:

21

Haga que su shell cambie el título de la ventana cada vez que cambie de directorio, o cada vez que muestre un mensaje.

Para su ~/.bashrc:

if [[ "$TERM" == screen* ]]; then
  screen_set_window_title () {
    local HPWD="$PWD"
    case $HPWD in
      $HOME) HPWD="~";;
      $HOME/*) HPWD="~${HPWD#$HOME}";;
    esac
    printf '\ek%s\e\\' "$HPWD"
  }
  PROMPT_COMMAND="screen_set_window_title; $PROMPT_COMMAND"
fi

O para su ~/.zshrc(para usuarios de zsh):

precmd () {
  local tmp='%~'
  local HPWD=${(%)tmp}
  if [[ $TERM == screen* ]]; then
    printf '\ek%s\e\\' $HPWD
  fi
}

Para obtener más información, busque títulos dinámicos en el manual de la pantalla o "Títulos (ventanas de nombres)" en la página del manual.

Gilles 'SO- deja de ser malvado'
fuente
Copié el bash one en mi .bashrc y está emitiendo estos errores: bash: PROMPT_COMMAND: línea 0: error de sintaxis cerca de token inesperado ;' bash: PROMPT_COMMAND: line 0: ; screen_set_window_title '
liewl
@David: Lo siento, el punto era acumular comandos PROMPT_COMMANDsi ya había algo, pero tenía los componentes en el orden incorrecto.
Gilles 'SO- deja de ser malvado'
2
Gran truco @Gilles. Para aquellos a quienes les gusta mantener cortos los títulos de las ventanas, puede descartar la ruta completa y solo mantener el nombre base. Simplemente reemplace $HOME/*) HPWD="~${HPWD#$HOME}";;con*) HPWD=`basename "$HPWD"`;;
0

Puede poner esto en .bashrc para cambiar el nombre del terminal (nombre de la ventana) al último directorio (o nombre de archivo) en el que se encuentra (trabajando).

case "$TERM" in xterm*|rxvt*) PROMPT_COMMAND='echo -ne "\033]0;${PWD##*/}\007"' ;; *) ;; esac

más descrito aquí: enlace

B.Kocis
fuente