在 vim 中的 `grepprg` 的默认设置中,`$*`(一个美元符号后跟一个星号)是什么意思?
What does `$*`(a dollar sign followed by a star) mean in the default setting of `grepprg` in vim?
在 Mac 上的原版 vim 中,当我键入 :set grepprg?
时,它 returns 如下:
grepprg=grep -n $* /dev/null
.
我明白 -n
和 /dev/null
的意思,
感谢一个老问题 。
我也明白 $
和 *
分别意味着什么。
但是,我不确定 $*
是什么意思。
我试图在 vim 文档中查找它,
但我能找到的只有
The placeholder "$*" is allowed to specify where the arguments will be included.
我觉得我在这里遗漏了一些重要的联系。
如果有人能向我解释,我将不胜感激
$*
如何作为占位符工作。
更新:
感谢@romainl 的详细解释,
我意识到我将 $*
误解为正则表达式,
而它们是 shell 脚本中约定的一部分。
事实上,已经存在 old post
关于这个特定的约定。
傻我!
我不确定除了你已经引用的内容之外还需要什么样的解释:
The placeholder "$*" is allowed to specify where the arguments will be included.
$*
只是一个占位符,它的工作原理与所有占位符一样:在实际发送到 shell 之前,该命令由 &grepprg
和 $*
构建而成,如果存在,将替换为用户提供的任何模式、文件名、标志等。
假设您要在当前目录下的所有 JavaScript 个文件中搜索 foo\ bar
。命令将是:
:grep 'foo\ bar' *.js
在您按下 <CR>
后,Vim 获取您提供给 :grep
的任何参数,在本例中:
'foo\ bar' *.js
然后,如果 &grepprg
中有一个 $*
,它被替换为给定的参数:
grep -n 'foo\ bar' *.js /dev/null
或者,如果 &grepprg
中没有 $*
,则将给定的参数附加到它,然后才将整个命令发送到 shell.
$*
表示“在这个命令中,我特别希望用户提供的参数出现在这里”。
至于$*
的含义……$
和*
没有内在含义,$*
可能是$$$PLACEHOLDER$$$
或任何东西。 $*
可能已被选中,因为它在 shell 脚本中用于表示提供给函数或脚本的所有参数,这与 &grepprg
中发生的事情的含义有些接近 $*
.
在 Mac 上的原版 vim 中,当我键入 :set grepprg?
时,它 returns 如下:
grepprg=grep -n $* /dev/null
.
我明白 -n
和 /dev/null
的意思,
感谢一个老问题 $
和 *
分别意味着什么。
但是,我不确定 $*
是什么意思。
我试图在 vim 文档中查找它,
但我能找到的只有
The placeholder "$*" is allowed to specify where the arguments will be included.
我觉得我在这里遗漏了一些重要的联系。
如果有人能向我解释,我将不胜感激
$*
如何作为占位符工作。
更新:
感谢@romainl 的详细解释,
我意识到我将 $*
误解为正则表达式,
而它们是 shell 脚本中约定的一部分。
事实上,已经存在 old post
关于这个特定的约定。
傻我!
我不确定除了你已经引用的内容之外还需要什么样的解释:
The placeholder "$*" is allowed to specify where the arguments will be included.
$*
只是一个占位符,它的工作原理与所有占位符一样:在实际发送到 shell 之前,该命令由 &grepprg
和 $*
构建而成,如果存在,将替换为用户提供的任何模式、文件名、标志等。
假设您要在当前目录下的所有 JavaScript 个文件中搜索 foo\ bar
。命令将是:
:grep 'foo\ bar' *.js
在您按下 <CR>
后,Vim 获取您提供给 :grep
的任何参数,在本例中:
'foo\ bar' *.js
然后,如果 &grepprg
中有一个 $*
,它被替换为给定的参数:
grep -n 'foo\ bar' *.js /dev/null
或者,如果 &grepprg
中没有 $*
,则将给定的参数附加到它,然后才将整个命令发送到 shell.
$*
表示“在这个命令中,我特别希望用户提供的参数出现在这里”。
至于$*
的含义……$
和*
没有内在含义,$*
可能是$$$PLACEHOLDER$$$
或任何东西。 $*
可能已被选中,因为它在 shell 脚本中用于表示提供给函数或脚本的所有参数,这与 &grepprg
中发生的事情的含义有些接近 $*
.