Prompt personalizzato di Tmux e ZSH: bug con il nome della finestra


43

Ho personalizzato il mio prompt ZSH con oh-my-zsh per renderlo più leggibile e aggiungere informazioni su Git se mi trovo in un repository.

Esempio:
bob@inf [~/docs] %
bob@inf [~/src/nicest] master %(in un repository git)

Funziona bene ma ho alcuni bug con tmuxe il nome della finestra. Visualizza ancora un valore senza senso e non posso disabilitarlo con automatic-rename off(semplicemente non funziona, il nome della finestra cambia dopo ogni comando), per il primo esempio usare tmux ~/docsper il nome della finestra.

Non sono sicuro di come posso risolverlo, vorrei mantenere il mio prompt zsh così com'è, se posso apportare modifiche ma vorrei capire dov'è il problema?

Un'altra soluzione potrebbe essere quella di ridefinire il comando settile(da questa risposta ) ma non sono sicuro di come farlo nel modo giusto.

Risposte:


76

Ho dato un'occhiata a oh-my-zsh e ho trovato un probabile sospetto .

Quando il valore della variabile d'ambiente TERM inizia con screen(che dovrebbe essere sia sullo schermo che su tmux ), utilizza una sequenza di controllo del terminale dello schermo per impostare il nome della finestra su

  • (appena prima di visualizzare un prompt della shell)
    la parte più a sinistra del percorso "tilde compresso" della directory di lavoro corrente ( ..seguita dagli ultimi 13 caratteri o l'intero percorso se inferiore a 15 caratteri) e
  • (appena prima di iniziare un comando)
    la prima “parola” del comando di circa-to-be-run (non contando ssh, sudoe pochi altri).

Sembra che funzioni in questo modo per te (hai detto che la tua finestra denominata è cambiata ~/docsquando eri in quella directory). Se si desidera disabilitare questa ridenominazione automatica, è possibile possibile disattivare completamente impostando il parametro DISABLE_AUTO_TITLE shell truenella vostra .zshrc:

DISABLE_AUTO_TITLE=true

Se lo imposti in una shell interattiva, finirai con una stringa vuota per il nome della finestra corrente, ma oh-my-zsh smetterà di aggiornare la finestra prima di ogni prompt e comando in quell'istanza della shell (deve essere in il vostro .zshrcdi influenzare tutte le nuove istanze di shell).


4
Questa è una risposta così perfetta. Accurato, informativo, conciso e puntuale. Inoltre, fornisce una soluzione oltre a rispondere alla domanda originale ("capire dove si trova il problema"). È solo triste che chiunque abbia avuto il tempo di chiedere non si sia preoccupato di contrassegnarlo come risposta.
Dmondark,

Grazie grazie grazie grazie grazie grazie
Jezen Thomas

dov'è un .zshrcfile per tutti gli utenti?
Andilab

29

So che la risposta sopra ti dà una soluzione, ma un'altra è semplicemente aggiungere questa opzione al tuo ~ / .tmux.conf

set-option -g allow-rename off

Questa è una soluzione migliore poiché riguarda solo tmux.
Paul Oliver,

Anche con questa impostazione, il riquadro di join seguito da riquadro di riquadro reimposta il nome della finestra :(
djsadinoff il

6

Ho riscontrato lo stesso problema, ovvero il nome della finestra di tmux è stato modificato anche impostando in .tmux.conf:

set-window-option -g automatic-rename off

Grazie risposta di Chris. Il nome della mia finestra di tmux non è stato rinominato automaticamente dopo la modifica:

set -g default-terminal "screen-256color"

a:

set -g default-terminal "xterm-256color"

0

Se si desidera disabilitare la ridenominazione automatica solo per determinate finestre, è possibile utilizzare:

 set -t [WINDOW_NUMBER] automatic-rename off

Disabilita la ridenominazione automatica nella finestra specifica in un'altra sessione:

 set -t [SESSION]:[WINDOW_NUMBER] automatic-rename off
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.