迭代正则表达式结果vimscript

前端之家收集整理的这篇文章主要介绍了迭代正则表达式结果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

猜你在找的正则表达式相关文章