특수 문자나 구두점 없이 문자와 숫자만 포함된 파일이 있다고 가정할 때 VIM을 사용하여 인접할 수도 있고 아닐 수도 있는 두 단어를 어떻게 바꿀 수 있습니까?
다음을 시도했지만(모든 "Tom"을 "Jerry"로 바꾸기) 명백한 이유로 작동하지 않습니다.
:%s/톰/제리/g :%s/제리/톰/g
감사합니다!
답변1
아마도 이와 같은 중간 변수를 사용할 수 있을 것입니다.
:%s/Tom/XX9G235a65/g :%s/Jerry/Tom/g :%s/XX9G235a65/Jerry/g
답변2
여기에는 두 가지 변형이 있습니다(둘 다 사용함).:help sub-replace-expression
조건부 연산자와 사전 조회를 각각 사용하여 다음과 같이 번거롭습니다.
:substitute/\<\(Tom\|Jerry\)\>/\=submatch(0) ==# 'Tom' ? 'Jerry' : 'Tom'/g
:substitute/\<\(Tom\|Jerry\)\>/\={'Tom':'Jerry', 'Jerry':'Tom'}[submatch(0)]/g
이렇게 하면 @MichaelDurrant의 답변과 같은 중개자가 필요하지 않습니다.