8
在Vim中,读取shell命令输出的最佳方式(便携式和快速)是什么?这个输出可能是二进制的,因此包含空值和(不)具有重要的尾随换行符。我看到的当前解决方案:读取shell命令输出的最佳方法
- 使用
system()
。问题:不适用于NULL。 - 使用
:read !
。问题:不会保存结尾的换行符,尝试智能检测输出格式(dos/unix/mac)。 - 使用
!
重定向到临时文件,然后readfile(, "b")
来读取它。问题:fs的两次调用,shellredir
选项默认情况下也会重定向stderr,它应该不太容易(这里提到的'shellredir'
是因为它可能被设置为有效值)。 - 使用
system()
并通过xxd
过滤输出。问题:非常缓慢,最不便携(管道没有相当于'shellredir'
)。
还有其他想法吗?
你可以试试' =系统( 'printf的 '' \ x00的' '')'。它不会输出任何东西,而':%!printf'\ x00''会将单个NULL看作'^ @'在缓冲区中(大问题:':%!printf'\ x00 \ r \ n''会一样)。 –
ZyX
2012-02-08 04:01:12
这里的问题是,我不想有两个功能:“将命令读入缓冲区”,通常可以通过“%!”和“将命令输出到文件中”来实现,我不能说我永远不会需要更多。类似于'readfile()'是这种情况下最灵活的解决方案。 – ZyX 2012-02-08 04:09:03
刚想到使用perl/python支持;请参阅初学者的答案 – sehe 2012-02-08 08:22:07