shell - 将命令输出放入 shell 中以供进一步编辑

标签 shell zsh fzf

我发现了一个不错的 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/

相关文章:

ubuntu - tmux fzf-tmux 在使用快捷方式运行时卡住

fuzzy-search - 如何使用 ripgrep/fzf 列出匹配搜索的源文件名

eclipse - 在没有eclipse的情况下使用tomcat

带有子进程返回的 Python 脚本必须是 str,而不是 int evrything linter 说是这种情况

linux - 保存for循环的输出

bash - 如何编写输出带有空格的(文件)名称的命令,以使它们在反引号内工作?

zsh - 每个命令后的zsh新行提示符

vim - 带有 FZF 的 Windows 上的 neovim

python - Django,使用shell从表单集中的字段中获取首字母数据

git - 你如何在 zsh 中使用现有的函数补全?