微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

迭代正则表达式结果vimscript

vimscript中,如何遍历当前文件中正则表达式的所有匹配项,然后为每个结果运行 shell命令?

我认为这是一个开始,但我无法弄清楚如何将它提供给整个文件并获得每场比赛.

while search(ENTIRE_FILE,".*{{\zs.*\ze}}",'nw') > 0
    system(do something with THIS_MATCH)
endwhile

解决方法

假设我们有一个包含内容文件

123 a shouldmatch
456 b shouldmatch
111 c notmatch

我们喜欢匹配

123 a shouldmatch
456 b shouldmatch

与正则表达式

.*shouldmatch

如果每行只有一个匹配项,则可以使用readfile(),然后遍历这些行并使用matchstr()检查每一行. [1]

function! Test001()
  let file = readfile(expand("%:p")) " read current file
  for line in file
    let match = matchstr(line,'.*shouldmatch') " regex match
    if(!empty(match))
      echo match
      " your command with match
    endif
  endfor
endfunction

您可以将此函数放在〜/ .vimrc中,并通过调用Test001()调用它.

[1] http://vimdoc.sourceforge.net/htmldoc/eval.html#matchstr%28%29

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐