Domanda

Ho voluto ottenere lo stesso come chiesto qui Salvataggio directory corrente alla storia bash ma all'interno shell zsh. Non ho fatto alcun trickry zsh prima, ma finora non ho:

function precmd {  
hpwd=$history[$((HISTCMD-1))]  
if [[ $hpwd == "cd" ]]; then  
cwd=$OLDPWD  
else  
cwd=$PWD  
fi  
hpwd="${hpwd% ### *} ### $cwd"  
echo "$hpwd" >>~/.hist_log  
}  

In questo momento risparmio il comando annotato con il nome della directory in un file di log. Questo funziona bene per me. Proprio pensato che ci potrebbe essere un modo per rendere la sostituzione nella storia buffer stesso.

È stato utile?

Soluzione

function _-accept-line() {
    [[ -z "${BUFFER" ]] || [[ "${BUFFER}" =~ "### ${(q)PWD}\$" ]] || BUFFER="${BUFFER} ### ${PWD}"
    zle .accept-line
}
zle -N accept-line _-accept-line

Aggiungerà ### ${PWD} alla riga di comando. Non è la soluzione migliore si potrebbe usare, ma funziona.

UPD: risposta in base a commento di @Dennis Williamson:

function zshaddhistory() {
    print -sr "${1%%$'\n'} ### ${PWD}"
    fc -p
}

Altri suggerimenti

Invece di memorizzare su ogni comando ho aggiunto quanto segue alla beginging del mio precmd () per riporlo quando cambio directory:

    if [ "$LAST_DIR" != "$PWD" ]
    then
            print -s "##dir## $PWD"
            LAST_DIR=$PWD
    fi

aggiunge un '## dir ## dir nome' linea autonoma alla storia ogni volta che un comando viene eseguito da una nuova directory.

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