将当前目录保存到zsh历史记录

San*_*eep 5 shell zsh zshrc

我想实现与此处所要求的相同.将当前目录保存到bash历史记录但在zsh shell中.我之前没有做任何zsh欺骗,但到目前为止我有:

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

现在我将带有目录名称注释的命令保存到日志文件中.这对我来说很好.只是想到可能有一种方法可以在历史缓冲区中进行替换.

ZyX*_*ZyX 7

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

将添加### ${PWD}到您的命令行.不是您可以使用的最佳解决方案,但它确实有效.

UPD:答案基于@Dennis Williamson的评论:

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