redditissä käydyn keskustelun perusteella onnistuin lopultakin väsäämään varsin 4DOS-maisen komento- ja kansiohistoriavalikon zsh:hon.
Edellytykset: dmenu sekä asetus
setopt auto_pushd
Funktion sisältö on tällainen, tallennetaan vaikka nimelle ”either-history-dmenu” jonnekin $fpathin varrelle:
if [[ $BUFFER == cd\ * ]]; then
LBUFFER+=\~$(dirs | dmenu -i -l 20 | awk '{ print $1 }')
else
LBUFFER=$(fc -lr 1 | dmenu -i -l 20 | sed 's/^ [0-9]\+ \+//')
fi
Sitten kytketään tämä esim. PgUp-näppäimeen:
autoload -U either-history-dmenu
zle -N either-history-dmenu
bindkey "\e[5~" either-history-dmenu
Nyt kun komentorivillä painaa PgUp, selataan kansiohistoriaa, jos komentorivi alkaa ”cd ”, muussa tapauksessa selataan komentohistoriaa. Valikosta tehty valinta lisätään komentoriville odottamaan Enterin painallusta.