Сохранение текущего каталога к zsh истории

Я хотел достигнуть того же, как спросили здесь Сохраняющего текущий каталог для избиения истории, но в оболочке zsh. Я не сделал никакого zsh trickry прежде, но до сих пор я имею:

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

Прямо сейчас я сохраняю команду, аннотируемую именем каталога к файлу журнала. Это хорошо работает для меня. Просто мысль там могла бы быть способом сделать замену в самом буфере истории.

5
задан Community 23 May 2017 в 12:15
поделиться

1 ответ

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

Добавит ### ${PWD} в командную строку. Не лучшее решение, которое вы могли бы использовать, но оно работает.

UPD: Ответ основан на комментарии @Dennis Уильямсона:

function zshaddhistory() {
    print -sr "${1%%$'\n'} ### ${PWD}"
    fc -p
}
7
ответ дан 13 December 2019 в 22:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: