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?


¿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.


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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.