![zsh 键绑定:忽略插入最后一个单词中的给定命令](https://linux22.com/image/145419/zsh%20%E9%94%AE%E7%BB%91%E5%AE%9A%EF%BC%9A%E5%BF%BD%E7%95%A5%E6%8F%92%E5%85%A5%E6%9C%80%E5%90%8E%E4%B8%80%E4%B8%AA%E5%8D%95%E8%AF%8D%E4%B8%AD%E7%9A%84%E7%BB%99%E5%AE%9A%E5%91%BD%E4%BB%A4.png)
在 中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)'
这是做什么的:
insert-last-word
用函数替换实现smart-insert-last-word
,随 Zsh 一起分发,但默认不加载。- 说我们希望我们的新
insert-last-word
小部件匹配任何单词(*
),但是不是任何包含该词last
或字面词的词match
。 EXTENDED_GLOB
需要能够使用~
(“但不是”)运算符。
当然,您可以将最后一行中的模式替换为排除所有您不想插入的单词或模式的内容。