[英]Vim nested execute commands syntax
我正在尝试在vimscript中执行嵌套的执行命令。 我知道这个命令在ex模式下工作:
g/\(^\n\|\%1l\).\_.\{-}\n$/execute "normal! vap:call MCformat()\<cr>"
我希望能够在脚本中运行该命令。 我已尝试过以下代码的多种排列,但无法使其正常工作。
function! RunMCformat()
silent! execute "normal! g/\(^\n\|\%1l\).\_.\{-}\n$/execute \"normal! vap:call MCformat\(\)\<cr>\""
endfunction
可能我没有正确地逃脱字符串,但我不知道我哪里出错了。
由于双引号,您必须转义(即加倍) /.../
模式定义中的反斜杠。 但是,最大的问题是第一个:normal!
; :g[lobal]
是一个Ex命令 。 所以,你很幸运,你可以只是前言:silent!
(它调用Ex命令,如:global
),你应该完成; 没有嵌套:execute
是必要的:
function! RunMCformat()
silent! global/\(^\n\|\%1l\).\_.\{-}\n$/execute "normal! vap:call MCformat()\<cr>"
endfunction
一般来说,我会避免嵌套:execute
; 在任何情况下都不可读。 相反,将代码的一部分提取到函数/自定义命令(您可以在其中使用:execute
),并调用它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.