完全禁用 Zsh 历史记录

4

我希望完全禁用Zsh历史记录(向上箭头)和zle历史搜索(即esc + p)。我该如何做到这一点?

我当前的.zshrc文件:

unsetopt hist_append
unsetopt hist_expand
HISTFILE=
HISTSIZE=SAVEHIST=0

目前我有一个历史缓冲区,但我希望它的历史为零。

2021年10月21日更新:

我已经添加了

bindkey -r "^[p"
bindkey -r "^Xr"
bindkey -r "^Xs"
bindkey -r "^[[A"
bindkey -r "^[[B"
bindkey -r "^[n"

为了消除我使用的历史功能(esc+p已经深深地烙印在我的脊椎骨上 - 很难忘记),请执行以下操作。

无关,但我非常确定这个结构 HISTSIZE=SAVEHIST=0 是不起作用的。 - hymie
嗯。今天我学到了。 - hymie
我也是! :) - Kare Nuorteva
1
我认为这种链式赋值只适用于使用整数表示内部参数(即typeset -i)。 - chepner
1
他的观点是对于普通的shell变量,A=B=5将值B=5放入变量A中。但是如果你将变量标记为“仅整数”,那么A=B=5将把值5放入变量AB中。这个技巧并不适用于所有变量,只适用于特定的“仅整数”变量。这不是你原来问题的答案,而是继续讨论链式变量赋值的内容。 - hymie
显示剩余2条评论
3个回答

6
我在我的.zshrc文件中使用以下条目:
alias disablehistory="function zshaddhistory() {  return 1 }"

如果定义了函数zshaddhistory,它可以控制历史记录是否保存。
因此,别名disablehistory只会定义一个始终返回1(不保存)的函数。
alias disablehistory="function zshaddhistory() {  return 1 }"

alias enablehistory="unset -f zshaddhistory"

"enablehistory"只是取消先前别名设置的功能。
如果您想完全禁用历史记录,请在您的".zshrc"中永久定义"zshaddhistory"。

2
我在zsh手册中没有看到完全禁用历史记录的内容。即使设置HISTSIZE=0,似乎也会将HISTSIZE的值重置为1。
您可以通过使用bindkey更改键绑定,以便历史记录功能永远不会发生。例如,对于我的向上箭头键,可以使用“bindkey -r“^[[A””来取消绑定(请注意,我实际上输入了一个脱字符和两个括号,而不是一个转义键)。

0

尝试配置您的ZSH设置以运行一个postexec函数,该函数会清空/删除您的.zhistory文件。这是一个hacky解决方法,但应该可以工作。


目前HISTFILE="" 我也尝试了HISTFILE="/dev/null"但没有成功。这里没有任何黑客技巧! - Kare Nuorteva

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接