function zshaddhistory() {
emulate -L zsh
if [[ $1 != *"production"* ]] ; then
print -sr -- "${1%%$'\n'}"
fc -p
else
return 1
fi
}
Run Code Online (Sandbox Code Playgroud)
将以上内容放入交互式外壳启动时将源文件(.zshrc
或.zshrc
像我一样来自源文件)。
替代形式(隐式添加到历史记录中):
function zshaddhistory() {
emulate -L zsh
if [[ $1 = *"production"* ]] ; then
return 1
fi
}
Run Code Online (Sandbox Code Playgroud)
。注意:
print -sr -- "${1%%$'\n'}"
Run Code Online (Sandbox Code Playgroud)
明确地将项目添加到历史记录。但是,如果zshaddhistory
返回的退出代码为零,则zsh会隐式执行相同的操作,因此,不使用fc -p
和使用setopt nohistignoredups nohistignorealldups
(这是默认状态),您将在历史记录中看到不需要的重复项。
emulate -L zsh
此处是为了确保不会进入仿真设置并更改功能主体的解释。我将此行放在我在zsh配置中定义的每个函数的开头。