gpt4 book ai didi

shell - 读取shell命令输出的最佳方式

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

在 Vim 中,读取 shell 命令输出的最佳(便携且快速)方式是什么?此输出可能是二进制的,因此包含空值,并且(不)具有重要的尾随换行符。我看到的当前解决方案:

  • 使用 system() .问题:不适用于 NULL。
  • 使用 :read ! .问题:不会保存尾随换行符,尝试智能检测输出格式(dos/unix/mac)。
  • 使用 !重定向到临时文件,然后 readfile(, "b")阅读它。问题:两次调用fs,shellredir选项还默认重定向 stderr 并且它的可移植性应该较低(此处提到 'shellredir' 因为它可能被设置为有效值)。
  • 使用 system()并通过 xxd 过滤输出.问题:非常慢,最不便携(对于管道,不等同于 'shellredir')。

  • 还有其他想法吗?

    最佳答案

    您正在使用 正文 编辑。如果您关心 NUL、尾随 EOL 和(可能)冲突的编码,您无论如何都需要使用十六进制编辑器?

    如果我需要对我的操作进行如此多的控制,我确实使用 xxd 路线,

    :se binary

    您似乎错过的一个不错的选择是插入模式表达式寄存器插入:

    C-r=system('ls -l')Enter



    这可能会或可能不会对字符编码业务更智能/更少干扰,但如果它对您足够重要,您可以尝试它。

    或者您可以使用 Perl 或 Python 支持来有效地使用 popen
    粗略的想法:
    :perl open(F, "ls /tmp/ |"); my @lines = (<F>); $curbuf->Append(0, @lines)

    关于shell - 读取shell命令输出的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9148277/

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