微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

读取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)

原文地址:https://www.jb51.cc/bash/384889.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐