我有一个 bash 脚本,它组装一些数据,然后通过 fzf 管道供用户选择,然后操纵选择,然后将其打印到标准输出。
这模拟了脚本:
#!/bin/sh
echo hello | fzf | sed 's/h/j/g'
这在命令行中效果很好,但是当从 vim 运行它以包含在当前缓冲区中时,fzf TUI 永远不会显示,并且结果中包含 ANSI 转义序列:
我如何从 vim 运行命令并不重要。我试过:read !{cmd}
, :.!{cmd}
, 甚至:let a=system('{cmd}')
.
例如,我希望这可以工作:
:read !echo hello | fzf | sed 's/h/j/g'
fzf 似乎混淆了 tty 的标准输出。
我知道这不是 vim 的限制,因为如果我用 fzf 替换另一个带有 tty 的交互式选择器,它就可以工作。
是否有 fzf 或 vim 选项可以完成这项工作?