读取shell命令输出的最佳方法

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

>使用system().问题:不适用于NULL.
>使用:阅读!问题:不会保存尾随换行符,试图智能检测输出格式(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)

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...