我有一些bash脚本,我需要从Vim脚本中检索它们的输出。有可能吗?如果是,怎么做?
发布于 2015-05-18 11:26:54
若要执行外部命令并在Vim变量中捕获其输出,请使用system()
:let hostname = system('hostname')该命令是通过配置的'shell'调用的;只要您的Bash脚本有一个正确的shebang行(#!/bin/bash),一切都应该很好。
如果最终希望将输出插入当前缓冲区,则可以直接使用:read !{cmd}:
:read !hostname发布于 2018-02-09 23:15:33
作为另一种方法,请注意,let语句的默认签名是:
let {var} = {expr}右手边必须是一个表情。这意味着let不能捕获execute命令的输出。换句话说,试图:
let {var} = {cmd}会产生一个错误。解决方法是使用redir命令,该命令具有以下语法:
redir => {var}
{cmd}
redir end让我们看看它在实践中是如何运作的。首先尝试:
let somevar = echo "The current locale settings are: " . v:lang返回错误E15:无效表达式。现在有:
redir => somevar
echo "The current locale settings are: " . v:lang
redir end 错误消失,变量被成功分配,并通过打印其值进行验证:
echo somevar产出:
The current locale settings are: en_US.UTF-8https://stackoverflow.com/questions/30301717
复制相似问题