Vim嵌套的执行命令语法

时间:2018-01-30 14:13:21

标签: vim

我正在尝试在vimscript中执行嵌套的execute命令。我知道这个命令在ex模式下工作:

function! RunMCformat()   
  silent! execute "normal! g/\(^\n\|\%1l\).\_.\{-}\n$/execute \"normal! vap:call MCformat\(\)\<cr>\""

endfunction

我希望能够在脚本中运行该命令。我已尝试过以下代码的多种排列,但无法使其正常工作。

{{1}}

可能我没有正确地逃脱字符串,但我不知道我哪里出错了。

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),并调用它。