fzf 摇滚!我想用它来搜索 bash 历史记录。找到匹配项后,我希望将它放在命令行上,但不执行,以便我可以进一步编辑它。(所有这些都在源 bash 函数或脚本中,因此它可以访问我的历史记录。)
我几乎可以正常工作,但不完全。
这将选择命令,但立即运行它:
eval $(history | "$HOME/bin/fzf" +s | sed 's/ *[0-9]* *//')
Run Code Online (Sandbox Code Playgroud)
这会将它放入我的剪贴板,但是当我粘贴它时,它仍然以空白和换行符结尾,因此它会立即执行。
history | "$HOME/bin/fzf" +s | sed 's/ *[0-9]* *//' | xclip -se c
Run Code Online (Sandbox Code Playgroud)
我还尝试了几种变体,包括
history | "$HOME/bin/fzf" +s | sed -e 's/ *[0-9]* *//' -e 's/$//' | xclip -se c
Run Code Online (Sandbox Code Playgroud)
结果相同。
这确实有效,但我仍然必须将其放入剪贴板,然后手动粘贴。
history | "$HOME/bin/fzf" +s | sed -re 's/ *[0-9]* *//' | awk '{printf "%s", $0}' | xclip -se c
Run Code Online (Sandbox Code Playgroud)
如何一步完成 - 无需手动粘贴?
我以为只是离开 xclip 就可以了,但它不起作用。