gpt4 book ai didi

shell - 将 "execute"函数的返回值保存到变量 vimscript

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

在vimscript中,我找不到将execute函数的返回值保存到变量中的方法。

我想做以下事情:

let s = execute(":!echo dani")
echo s

这应该返回:dani

Vim 不接受这个。在我的设置中(使用 vim-airline 和其他 UI 插件)屏幕将所有内容变为空白,按下按键后它恢复正常。

在 vimscript 中是否可以将函数调用的返回值或 execute 函数的返回值保存到变量中?

非常感谢

最佳答案

execute():redir 的现代替代品;它确实捕获了已执行命令的所有输出。让我们更仔细地看一下:

:let s = execute(":! echo dani") | echo strtrans(s)
^@:! echo dani^M^@dani^M^@

如您所见,它捕获了整个命令它的结果。如果你使用普通的 :echo,换行符和 ^@ 会掩盖完整的输出(你会用 :echomsg 看得更清楚,它确实特殊字符的解释较少)。

我认为您真正想要的是只是已执行的外部命令的输出(此处:echo)。您可以使用 system() 而不是 :! :

:let s = system('echo dani') | echo strtrans(s)
dani^@

尾随的换行符通常是这样删除的:

:let s = substitute(system('echo dani'), '\n\+$', '', '') | echo strtrans(s)
dani

关于shell - 将 "execute"函数的返回值保存到变量 vimscript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52979801/

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