我发现了一个不错的 zsh 命令 online使用 fzf
模糊搜索 shell 历史记录:
fh() {
eval $( ([ -n "$ZSH_NAME" ] && fc -l 1 || history) | fzf +s --tac | sed 's/ *[0-9]* *//')
}
但是,我不想使用 eval
-ing 命令,而是将其放在提示符中并在运行之前进一步编辑它,例如:
$ fh grep
(search happens)
$ grep -RI foo . <--- cursor
我尝试将 eval
替换为 echo
,这更好,但没有给我编辑命令。有没有办法在 bash/zsh 中做到这一点?
Here是一个相关的线程,建议使用 xvkbd
,但我希望有更简单的东西。
最佳答案
您可以使用官方 shell 集成。我使用 zsh,所以我只是复制提供的脚本并将其放入我的 ~/.zshrc
中。这将为您提供所需的确切行为,例如返回命令并将结果放在输入行上,而不是在无法编辑的情况下运行命令。
注意:它将覆盖历史搜索的快捷键 ctrl+r,而不是将其放入别名或类似的名称中,所以可能不完全是您想要的。但也许您可以构建一个可以从那里运行的脚本。
https://github.com/junegunn/fzf/blob/master/shell/key-bindings.zsh
关于shell - 将命令输出放入 shell 中以供进一步编辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65124051/