我想实现与这里所要求的Saving current directory to bash history相同的功能,但在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
}
现在,我将用目录名注解的命令保存到日志文件中。这对我来说很好。只是想可能有一种方法可以在历史缓冲区本身中进行相同的替换。
4条答案
按热度按时间hgqdbh6s1#
将
### ${PWD}
添加到命令行。不是你能用的最好的解决方案,但它有效。UPD:根据@Dennis威廉姆森的评论回答:
ccgok5k52#
我没有把它存储在每个命令中,而是在precmd()函数的开头添加了以下内容,以便在更改目录时存储它:
每次从新目录运行命令时,都会将“##dir## dir name”独立行添加到历史记录中。
7fhtutme3#
以下对ZyX's solution的调整解决了一个问题,即使用(向上箭头)重复使用历史命令会导致历史中
### $PWD
堆积:它在添加当前的PWD注解之前剥离所有现有的PWD注解。这样,我就可以自由地点击向上箭头,执行一个旧的命令,而不需要通过注解退格键,并且新的历史记录项将只有一个注解与当前的工作目录。
c3frrgcw4#
我修改了zsh的源代码;历史文件如下:
以前的事不要改