是否可以绕过hist_verify
特定的历史命令?例如,我很少需要验证!$
或!!
,但我发现验证对于更复杂的历史扩展来说是一个有用的功能。是否可以将选定的历史操作符排除在历史验证之外?
答案1
也许是这样的:
accept-line() {
if [[ ${BUFFER//![\$!]} = *!* ]]; then
set -o histverify
else
set +o histverify
fi
zle .$WIDGET
}
zle -N accept-line
添加到您的~/.zshrc
作为启发式。也就是说,重新定义accept-line
小部件(当您按 时调用Enter),以便仅当当前行中histverify
存在后跟不是和!
的字符时才设置该选项。!
$
echo '!e' !!
对于像or 这样的命令行来说,这很愚蠢,\!!rm
但似乎它应该是一个可以接受的限制。
就我个人而言,我添加set +o banghist
到我的~/.zshrc
并更喜欢依赖history-search-backward
(在模式下默认绑定在Alt+上)或(我绑定在)上,这可以节省一些打字,并且在接受命令之前总是给我一个视觉反馈。pemacs
history-beginning-search-backward
PageUp