我正在尝试在vimscript中执行嵌套的execute命令。我知道这个命令在ex模式下工作:
function! RunMCformat()
silent! execute "normal! g/\(^\n\|\%1l\).\_.\{-}\n$/execute \"normal! vap:call MCformat\(\)\<cr>\""
endfunction
我希望能够在脚本中运行该命令。我已尝试过以下代码的多种排列,但无法使其正常工作。
{{1}}
可能我没有正确地逃脱字符串,但我不知道我哪里出错了。
答案 0 :(得分:3)
由于双引号,您必须在/.../
模式定义中转义(即加倍)反斜杠。然而,最大的问题是第一个:normal!
; :g[lobal]
是 Ex命令。所以,你很幸运,你可以先加:silent!
(调用:global
之类的Ex命令),你应该这样做吗?不需要嵌套:execute
:
function! RunMCformat()
silent! global/\(^\n\|\%1l\).\_.\{-}\n$/execute "normal! vap:call MCformat()\<cr>"
endfunction
一般来说,我会避免:execute
的嵌套;在任何情况下都不可读。而是将代码的一部分提取到函数/自定义命令中(您可以使用:execute
),并调用它。