![捕获其输出时 fzf 行为发生变化](https://linux22.com/image/225320/%E6%8D%95%E8%8E%B7%E5%85%B6%E8%BE%93%E5%87%BA%E6%97%B6%20fzf%20%E8%A1%8C%E4%B8%BA%E5%8F%91%E7%94%9F%E5%8F%98%E5%8C%96.png)
以下命令按预期工作正常:
find ~ -type f | fzf -m --preview-window=up:30% --header "ctrl-f: selected all and exit" --bind "enter:execute(less {})" --bind "ctrl-f:select-all+accept"
但是,如果我将>outfile.txt
或添加| xclip
到该命令的末尾,则所有--bind
包含execute
操作的选项都将被忽略。这是已知错误吗?有办法解决吗?
答案1
所有
--bind
包含execute
操作的选项都将被忽略
我不这么认为。在我的测试中less
确实开始了。它的行为与您期望的不同,因为它继承了重定向的 stdout fzf
。less
从终端读取击键,即使其标准输入是其他内容(因此重定向输入不是问题);但它打印到它的标准输出(所以重定向输出是一个问题,问题)。如果您想查看less
打印内容并仍然重定向输出fzf
,请less
明确指定用作/dev/tty
其标准输出:
find ~ -type f \
| fzf -m --preview-window=up:30% --header "ctrl-f: selected all and exit" \
--bind "enter:execute(less {} >/dev/tty)" \
--bind "ctrl-f:select-all+accept" >outfile.txt