shellescape函数中的数字1在vim中意味着什么?

it_*_*ure 2 vim

vim命令让我困惑.我已多次阅读并重读:help shellescape().我还是不明白数字的意义1shellescape(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命令映射到F4中.
  • :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.在哪种情况下我可以改变12shellescape()?

:nnoremap <F4> :exe ':silent  !"c:\Program Files\Mozilla Firefox\firefox.exe"'shellescape(expand('%:p'), 2)<CR> 
Run Code Online (Sandbox Code Playgroud)

Ing*_*kat 6

基本上有两种不同的用途shellescape(); 一个是Vimscript system()函数,另一个是:!Ex命令.虽然大多数转义需求在两种用途中都是相同的(例如,处理空格,参数必须用引号括起来),:!命令需要一些额外的转义,因为在命令行中,Vim为符号赋予特殊含义%(替换为当前文件名).这不会发生system().

因此,要告诉使用shellescape()哪种转义模式,它有额外的{special}参数; 如果你传递1(或任何其他评估为"true"的值),其他字符也会被转义.

TL; DR:通过1:!命令,0或者省略参数与使用system().

  • 一如既往地伟大!+1 (2认同)