在
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] 举报,一经查实,本站将立刻删除。