티스토리 뷰

모든 것이 +=다른 라인에서 발생하는 경우 :

: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
댓글
공지사항
Total
Today
Yesterday
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31