Come mostrato nella this answer, è possibile utilizzare read
con Readline (-e
) in bash per restituire gli elementi della cronologia precedente utilizzando i tasti su e giù:Come impostare i tasti freccia su e giù per mostrare le voci della cronologia in uno script usando zsh?
#! /usr/bin/env bash
while IFS="" read -p "input> " -e line; do
history -s "$line" # append $line to local history
done
Qual è il modo giusto per fare questo in zsh? (ottenendo l'input dell'utente su un loop e consentendo il completamento della cronologia dei tasti su/giù). Questo non funziona:
#! /usr/bin/env zsh
while IFS="" vared -p "input> " -c line; do
done
Penso che il completamento della cronologia sia disabilitato di default sugli script in zsh. Inoltre, non voglio che la cronologia provenga dalla shell, ma dall'input immesso nello script.
Grazie per la risposta! 'setopt interactive' non funziona comunque. – nachocab
in effetti non funziona. Quel flag non può essere impostato una volta che la shell è attiva e funzionante. Ho apportato una leggera modifica alla sceneggiatura. In ogni caso, dovresti semplicemente usare una normale shell interattiva, senza file di configurazione – Francisco
Hmm, non funziona ancora (sono su OSX e ricevo un segnale acustico quando uso i tasti freccia). Il motivo per cui non lo sto eseguendo come una nuova shell è perché questo è solo un esempio di giocattolo. Lo script effettivo fa altre cose con gli input dell'utente. – nachocab