如何指定搜索中的字符串有多个选项?例如,我想找到既具有开始的任意组合jspPar,btn或jspAtt以字母结尾K.
另外 - 我需要用字符串替换它,具体取决于原始前缀.例如,如果前缀是jspPar我需要用字母替换它P.(并且,让我们说,B并A为btn和,jspAtt根据).
是
\(jsPar\|btn\|jspAtt\)[^ \t]*K
Run Code Online (Sandbox Code Playgroud)
你在找什么?
在\(jsPar\|btn\|jspAtt\)说"在这一点上,匹配任何这些替代物",然后[^ \t]*说"在这一点上,匹配的空格或标签字符的任何量(包括零)",和K当然的意思是"在这一点上匹配一个K".
对于您添加的问题,可以执行以下操作:
%s/\(jsPar\|btn\|jspAtt\)[^ \t]*\zsK/\=submatch(1) == 'jsPar' ? 'P' : submatch(1) == 'btn' ? 'B' : 'A' /g
Run Code Online (Sandbox Code Playgroud)
(\zs说"认为比赛已经开始了",所以只有"K"才会被替换.)
但是如果我必须在一次通过中进行替换,我只会这样做.否则我只跑三s///秒钟:
%s/jspAtt[^ \t]*\zsK/A/g
%s/jsPar[^ \t]*\zsK/P/g
%s/btn[^ \t]*\zsK/B/g
Run Code Online (Sandbox Code Playgroud)
给定命令历史记录,这更少打字,并且也不太可能需要调试,而在指定任何计算时,这始终是一种潜力.