vim命令让我困惑.我已多次阅读并重读:help shellescape().我还是不明白数字的意义1在shellescape(expand('%:p'), 1).
这是我试图理解的完整命令:
:nnoremap <F4> :exe ':silent !"c:\Program Files\Mozilla Firefox\firefox.exe"'shellescape(expand('%:p'), 1)<CR>
Run Code Online (Sandbox Code Playgroud)
让我们一块一块地分解这个长命令.
:exe 是执行一些命令.:silent ! 是静默执行shell命令"c:\Program Files\Mozilla Firefox\firefox.exe" 可以调用我的firefox程序.shellescape(),有空白被逃脱. expand('%:p') 可以在完整表达式中获取当前文件名,即path + filename.从帮助页面中摘录的内容是什么意思?
使用|非零arg | {special}和'shell'在尾部包含"csh",它
第二次逃脱了.
是否有一些含义与1或2相同s/(ha.*)(world)/\2\1/g?
请详细举一个简单的例子.
我有两个与该主题相关的问题.
1.我可以通过哪种方式获得我的gvim中有多少种贝壳?
2.在哪种情况下我可以改变1成2shellescape()?
:nnoremap <F4> :exe ':silent !"c:\Program Files\Mozilla Firefox\firefox.exe"'shellescape(expand('%:p'), 2)<CR>
Run Code Online (Sandbox Code Playgroud)
基本上有两种不同的用途shellescape(); 一个是Vimscript system()函数,另一个是:!Ex命令.虽然大多数转义需求在两种用途中都是相同的(例如,处理空格,参数必须用引号括起来),但:!命令需要一些额外的转义,因为在命令行中,Vim为符号赋予特殊含义%(替换为当前文件名).这不会发生system().
因此,要告诉使用shellescape()哪种转义模式,它有额外的{special}参数; 如果你传递1(或任何其他评估为"true"的值),其他字符也会被转义.
TL; DR:通过1为:!命令,0或者省略参数与使用system().