Modo migliore per leggere una riga di input dell'utente in zsh? (ad es. con zle?)


11

Zsh readper qualche ragione sta facendo eco ^Minvece di accettarli come <Enter>sequenze di tasti. (Se -dimpostato, vengono riconosciuti come <Enter>"ma" echeggia ancora.) Inoltre non supporta le basi come il tasto backspace.

Posso aggirarlo hackerando / correndo bash,

> a=$(bash -c 'read -e -p "What would you like to do?: " tmp; echo $tmp')
What would you like to do?: eat cake
> echo $a                                                                
eat cake

ma mi chiedo se c'è un modo più pulito.


Impossibile confermare su una nuova zshinstallazione 4.3.10; % read afunziona bene qui.
user1686

Questo sta usando iterm su OS X; readfunziona su macchine Linux.
Nicholas Tung,

Risposte:


19

Per inserire una riga di testo comodamente in zsh, utilizzare vared. Utilizzando varedinvece readinvoca zle , che è l'equivalente di passare -ein bash per invocare readline.

vared -p 'What would you like to do?: ' -c tmp

Il comportamento che descrivi con semplice readsembra un terminale non configurato correttamente piuttosto che un problema di shell. Esegui stty -aper mostrare le impostazioni del tuo terminale e assicurati che eolsia impostato ^Me eraseimpostato su ciò che Backspaceinvia la tua chiave. A seconda del sistema operativo e di come è impostato e sul terminale, Backspaceinvia ^Ho ^?. L'impostazione del backspace di solito non funziona a causa di alcuni file di configurazione che tentano di impostarli manualmente, quindi la prima cosa da fare è tenere traccia e rimuovere qualsiasi configurazione errata. Se non ne trovi nessuno, controlla le impostazioni dell'emulatore di terminale per verificare che non sia impostato in una modalità di compatibilità storica. Se tutto il resto fallisce, aggiungi qualcosa di simile al tuo ~/.zshrc:

if [[ $(ps -o comm= $PPID) = iterm ]]; then
  stty erase '^?'
fi

1
vared -p 'Cosa ti piacerebbe fare ?:' -c tmp
zzapper

Così bello! Non sapevo del varedbuiltin. Si scopre zshzleche la pagina man vale sicuramente la pena almeno sfogliare.
ratijas,
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.