Domanda

So che posso exec un comando date nel mio zsh pronta. Tuttavia, esso mostra il vecchia di tempo; per vedere l'ora attuale, devo colpire <return> e ottenere un nuovo prompt con l'ora corrente.

C'è un modo per configurare il prompt zsh di aggiornare costantemente se stessa ogni secondo?

È stato utile?

Soluzione

Questo sarebbe .... sgradevole in uno zsh normale prompt (o bash, o di altre shell).

Vi suggerisco sarebbe meglio utilizzare Gnu schermo.

Lo schermo può avere una riga di stato che può mostrare il tempo. Ecco un esempio screenrc scorrere verso il basso a "Red Hat Magazine Una guida per GNU Screen" per vedere il campione (vi si riproducono che qui) che, quando viene eseguito schermo, mostrare l'ora corrente nell'angolo in basso a destra del terminale:

~ / .screenrc

hardstatus alwayslastline
hardstatus string '%{= kG}[ %{G}%H %{g}][%= %{=kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B}%Y-%m-%d %{W}%c %{g}]'

# Default screens
screen -t shell1        0
screen -t shell2        1

http://www.gnu.org/software/screen/

Altri suggerimenti

Nota: ho scritto questa risposta per una domanda simile , ma vedendo come questa domanda ha più punti di vista penso reinserire la mia risposta qui sarebbe utile.

Questa è infatti possibile senza ricorrere a strani hack. Ho questo nel mio .zshrc

RPROMPT='[%D{%L:%M:%S %p}]'

TMOUT=1

TRAPALRM() {
    zle reset-prompt
}

La funzione TRAPALRM viene chiamata ogni TMOUT secondi (in questo caso 1), e qui si esegue un aggiornamento rapido, e lo fa fino a quando un comando avvia l'esecuzione (e non interferisce con qualsiasi cosa si digita sul prompt prima di colpire entrare).

Fonte: http://www.zsh.org/mla/users/ 2007 / msg00944.html (E 'dal 2007!)

suona come una piacevole richiesta di me. Se qualcosa ha più senso che mostrare il momento in cui è stato visualizzato il messaggio.

Peter Stephenson ha postato una tecnica . Prova qualcosa di simile in .zshrc:

PROMPT="[%T] %n@%M %~ %# "

schedprompt() {
  emulate -L zsh
  zmodload -i zsh/sched

  # Remove existing event, so that multiple calls to
  # "schedprompt" work OK.  (You could put one in precmd to push
  # the timer 30 seconds into the future, for example.)
  integer i=${"${(@)zsh_scheduled_events#*:*:}"[(I)schedprompt]}
  (( i )) && sched -$i

  # Test that zle is running before calling the widget (recommended
  # to avoid error messages).
  # Otherwise it updates on entry to zle, so there's no loss.
  zle && zle reset-prompt

  # This ensures we're not too far off the start of the minute
  sched +30 schedprompt
}

schedprompt
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top