gpt4 book ai didi

vim 过滤器和标准输出/标准错误

转载 作者:行者123 更新时间:2023-12-04 12:42:16 26 4
gpt4 key购买 nike

当我使用 :%!通过过滤器运行文件的内容并且过滤器失败(它返回另一个不是 0 的代码)并将错误消息打印到 stderr 我用此错误消息替换了我的文件。如果过滤器返回指示错误和/或忽略过滤器程序写入 stderr 的输出的状态代码,是否有办法告诉 vim 跳过过滤?

在某些情况下,您希望将文件替换为过滤器的输出,但通常这种行为是错误的。当然,我可以通过一个按键来撤消过滤,但这不是最佳的。

在编写自定义 vim 脚本进行过滤时,我也遇到了类似的问题。我有一个脚本,它使用 system() 调用过滤器程序并用其输出替换缓冲区中的文件,但似乎没有办法检测 system() 返回的行是否写入 stdout 或 stderr .有没有办法在 vim 脚本中区分它们?

最佳答案

您可以使用 Python 来区分 stdout 和 stderr:

python import vim, subprocess
python b=vim.current.buffer
python line=vim.current.range.start
python p=subprocess.Popen(["command", "argument", ...], stdout=subprocess.PIPE, stderr=subprocess.PIPE, close_fds=True)
python returncode=p.poll()
python if not returncode: b.append(("STDOUT:\n"+p.stdout.read()+"\nSTDERR:\n"+p.stderr.read()).split("\n"), line)

关于vim 过滤器和标准输出/标准错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2575698/

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