Schermata GNU: nuova modifica del nome della finestra


20

Posso cambiare il nome di una finestra con Ctrl-a Shift-a. Invece di modificare manualmente diversi nomi di finestre, c'è un modo per farli assegnare automaticamente il nome alla directory corrente?


Quale shell usi?
Marco

Sto usando bash.
liewl,

Risposte:


21

Fai cambiare shell al titolo della finestra ogni volta che cambia directory o ogni volta che visualizza un prompt.

Per il tuo ~/.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 per il tuo ~/.zshrc(per utenti zsh):

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

Per ulteriori informazioni, cercare in Titoli dinamici nel manuale Schermo o in "Titoli (denominazione delle finestre)" nella pagina man.


Ho copypastato quello bash sul mio .bashrc e sta dando questi errori: bash: PROMPT_COMMAND: riga 0: errore di sintassi vicino token inaspettato ;' bash: PROMPT_COMMAND: line 0: ; screen_set_window_title '
liewl

@David: Scusa, il punto era accumulare comandi PROMPT_COMMANDse c'era già qualcosa, ma avevo i componenti nell'ordine sbagliato.
Gilles 'SO- smetti di essere malvagio' il

2
Ottimo trucco @Gilles. Per coloro a cui piace mantenere i titoli delle finestre brevi, è possibile eliminare l'intero percorso e mantenere solo il nome base. Basta sostituire $HOME/*) HPWD="~${HPWD#$HOME}";;con*) HPWD=`basename "$HPWD"`;;

0

Puoi metterlo in .bashrc per cambiare il nome del terminale (nome della finestra) nell'ultima directory (o nome del file) in cui ti trovi (lavorando).

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

più descritto qui: link

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.