在Kitty+Bash上配管fzf+xargs+less后断开端子



我正在尝试将fzf输出与通过xargs启动的命令相结合,该命令的输出需要用less进行分页。

使用基本命令的最简单示例如下:

echo test | fzf | xargs echo | less

在本例中,我使用echo和字符串test使其成为自包含的。

整个命令允许使用fzf选择字符串test,然后使用xargs启动最简单有用的命令(echo(,其输出预计将使用less进行分页。

然而,当运行less时,终端结果为"0";破碎的";并且要求CCD_ 12再次可用。

有没有一种方法可以让它在没有";断开";终端?

有趣的是,以下变体,其中一个单独的管道被移除,不会引起任何问题:

echo test | fzf | less
echo test | xargs echo | less
echo test | fzf | xargs echo

看来是这三个程序的结合造成了问题。

---ADDEDUM-

经过更多的测试,我发现当命令在Kitty作为终端模拟器和Bash作为shell下运行时会出现问题。

在Kitty+Zsh下试用->它是有效的。在xterm+Bash下尝试->它是有效的。

我现在认为这个问题范围太窄,不太有趣!我修改了标题以反映这种特殊性。

我在Kitty+fzf(在macOS上(中遇到了这个问题,并通过在fzf命令行中加前缀将TERM环境变量设置为";xterm";,例如,这至少解决了我在zsh中的问题:

TERM=xterm $(echo test | fzf | xargs echo | less)

我不知道为什么它能起作用,但偶尔会有一些东西让kitty崩溃,添加TERM=xterm似乎经常会有所帮助,这很奇怪,因为echo $TERM返回";xterm";不管怎样,对我来说是一个新的外壳。

最新更新