gpt4 book ai didi

bash - 在不影响 Vim 和行返回的情况下将最后执行的命令的输出捕获到变量中

转载 作者:行者123 更新时间:2023-12-04 18:46:39 25 4
gpt4 key购买 nike

从这个问题:bash - automatically capture output of last executed command into a variable我使用了这个命令:

PROMPT_COMMAND='LAST="`cat /tmp/x`"; exec >/dev/tty; exec > >(tee /tmp/x)'

它有效,但是当我使用 Vim 时,我得到了这个:
# vim
Vim: Warning: Output is not to a terminal

然后 Vim 打开。但这需要一段时间。有没有办法摆脱这个消息和减速?

此外,当我列出 dir 并回显 $LAST 时,它会删除返回行 (\n)。有没有办法保留返回线(\n)?

最佳答案

我认为你所要求的很难实现。 Vim 测试输出是否为终端。您提供的命令将输出重定向到 tee命令。 tee将其输入(也意味着:命令的输出)保存到文件并将其输出到终端。但是vim对此一无所知。它只知道它的输出不是终端。所以它输出警告。来自vim的源代码:

[...]
if (scriptin[0] == NULL)
ui_delay(2000L, TRUE);
TIME_MSG("Warning delay");

这意味着这个重定向总是会让你延迟 2 秒。

此外,例如, man vim命令不适用于此类重定向,因为终端输出具有一些通用文件没有的属性(例如宽度和高度)。所以……这行不通。

关于bash - 在不影响 Vim 和行返回的情况下将最后执行的命令的输出捕获到变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35231754/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com