如何使用变量内容作为 vim 命令的参数?

如何使用变量内容作为 vim 命令的参数?

例如假设我做了

:let foo=pattern

现在我想执行Ggrep patter,但使用变量foo而不是文字patter字符串。

:echo foo

输出pattern,但是

:Ggrep foo

只寻找 foo

更新:

构建一个命令字符串然后对其运行 :execute 不是一个解决方案,而是一种 hack。并且它会破坏任何非平凡变量值。

答案1

这与变量无关,但也许 vim 缩写命令可以提供帮助。从命令行尝试:

:abbreviate foo pattern

然后

:Ggrep foo<space>

它将把“foo”补充到你的“模式”中。

答案2

关于什么:

:execute ':grep ' . foo

答案3

如果您不喜欢该:exe解决方案,您可以使用表达式寄存器将变量的内容“读入”命令行=。例如,键入:Ggrep然后按Ctrl-r然后键入=foo并按Enter。假设变量foo包含“pattern”,您的命令行现在应如下所示:

:Ggrep pattern

这样做的好处是你可以看到将要运行的实际命令,甚至可以在Enter第二次按下之前对其进行修改。

看:

:help "=

答案4

使其成为环境变量!

鉴于:

:let $foo="whatever"

此命令

:e $foo

编辑文件whatever,因为 Vim 识别$命令并展开它。如果要将其作为文字,则必须转义美元符号。

相关内容