zsh 键绑定:忽略插入最后一个单词中的给定命令

zsh 键绑定:忽略插入最后一个单词中的给定命令

在 中zsh,我有alt+.绑定到insert-last-word

当我按alt+时.,我可以列出之前命令的最后一个单词。

当我循环浏览时,如何排除某些单词的显示?

即,如果这是我的历史:

echo
foo
ls

我想忽略foo,那么alt+.应该跳过foo

答案1

我已经测试过这个并且它有效:

setopt EXTENDED_GLOB
bindkey '^[.' insert-last-word
autoload smart-insert-last-word
zle -N insert-last-word smart-insert-last-word
zstyle :insert-last-word match '*~(*last*|match)'

这是做什么的:

  1. insert-last-word用函数替换实现smart-insert-last-word,随 Zsh 一起分发,但默认不加载。
  2. 说我们希望我们的新insert-last-word小部件匹配任何单词(* ),但是不是任何包含该词last或字面词的词match
  3. EXTENDED_GLOB需要能够使用~(“但不是”)运算符。

当然,您可以将最后一行中的模式替换为排除所有您不想插入的单词或模式的内容。

相关内容