vim命令使我感到困惑。我已经阅读并重新阅读了:help shellescape()
好几次了。我仍然不了解1
中数字shellescape(expand('%:p'), 1)
的含义。
这是我想了解的完整命令:
:nnoremap <F4> :exe ':silent !"c:\Program Files\Mozilla Firefox\firefox.exe"'shellescape(expand('%:p'), 1)<CR>
让我们逐一分解这个长命令。
:exe
用于执行一些命令。 :silent !
是无提示执行shell命令"c:\Program Files\Mozilla Firefox\firefox.exe"
可以调用我的firefox程序。 shellescape()
,有空白要转义。 expand('%:p')
可以全表达式获取当前文件名,即路径+文件名。 帮助页面的摘录是什么意思?
用| non-zero-arg | {special}和'shell'在其尾部包含“csh”
再次逃脱。
是否有一些含义与
s/(ha.*)(world)/\2\1/g
中的1或2相同?请详细举一个简单的例子。
我有两个与此主题相关的问题。
1.我可以通过哪种方式在gvim中获得多少种外壳?
2.在哪种情况下可以在shellescape()中将
1
更改为2
?:nnoremap <F4> :exe ':silent !"c:\Program Files\Mozilla Firefox\firefox.exe"'shellescape(expand('%:p'), 2)<CR>
最佳答案
从shellescape()
的帮助中:
shellescape({string} [, {special}]) shellescape()
Escape {string} for use as a shell command argument.
On MS-Windows and MS-DOS, when 'shellslash' is not set, it
will enclose {string} in double quotes and double all double
quotes within {string}.
For other systems, it will enclose {string} in single quotes
and replace all "'" with "'\''".
When the {special} argument is present and it's a non-zero
Number or a non-empty String (non-zero-arg), then special
items such as "!", "%", "#" and "<cword>" will be preceded by
a backslash. This backslash will be removed again by the :!
command.
您的示例中的
1
只是告诉shellescape()
使用反斜杠转义特殊字符。如果您要在!
返回的路径中使用expand()
(例如),则将其替换为\!
。shell
是一个选项: 'shell' 'sh' E91
'shell' 'sh' string (default $SHELL or "sh",
MS-DOS and Win32: "command.com" or
"cmd.exe", OS/2: "cmd")
global
Name of the shell to use for ! and :! commands.
—
:help 'shell'
“
With a non-zero-arg {special} and 'shell' containing "csh" in the tail it's escaped a second time
”意味着,如在您的示例中那样,给shellescape()
赋予special
一个非零参数(您的示例具有1
),它将为该shell
检查"csh"
,如果找到了(如果您的shell
设置为)。包含csh
的东西),它将对其进行两次转义。编辑以专门回答添加到(已编辑)原始帖子中的两个问题:
shell
获得shellescape()
设置(在:echo &shell
帮助报价中引用)。 2
是Number
,非零。因此,您应该能够在示例中将2
替换为1
并获得相同的结果。 关于vim - shellescape函数中的数字1在vim中意味着什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21224865/