繁体   English   中英

Vim嵌套的执行命令语法

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM