카테고리 없음
[정규식] VIM : 문자열의 각 인스턴스를 다른 값으로 바꾸는 방법
필살기쓰세요
2021. 2. 10. 14:25
모든 것이 +=
다른 라인에서 발생하는 경우 :
:let c=0 | g/\m+=/ s!\m+=!\=['/=', '-=', '*='][c%3]! | let c+=1
+=
같은 줄에 둘 이상이있을 수있는 경우 :
:fu! Cycle() | let c+=1 | return ['/=', '-=', '*='][c%3] | endf
:let c=-1 | %s/\m+=/\=Cycle()/g
참조 :
:h :global
:h s/\=
@SatoKatsura의 대답의 더 짧은 변형이 있습니다. 먼저 대체 목록을 정의한 다음를 사용하여 목록의 :help sub-replace-expression
첫 번째 요소를 제거합니다.
:let replacements = ['/=', '-=', '*='] | %s#+=#\=remove(replacements, 0)#
3 개 이상의 교체가 있고 교체를 반복하려면 다음을 사용하십시오.
:let replacements = ['/=', '-=', '*='] | %s#+=#\=add(replacements, remove(replacements, 0))[-1]#
출처
https://stackoverflow.com/questions/39930079