답변:
구현 :s//c
은 고정되어 있습니다. 당신이 찾고있는 것은 Vimscript 표현식 ( :help sub-replace-expr
)으로 대체하는 것 입니다. 을 통해 한 자리 숫자를 쿼리 getchar()
하거나 input()
다음을 통해 더 긴 숫자를 입력하라는 메시지를 표시 할 수 있습니다 .
:%s/person:/\=get(['woman', 'man'], getchar() - char2nr(1), submatch(0)) . ':'/
:%s/person:/\=get(['woman', 'man'], input('Your choice: ') - 1, submatch(0)) . ':'/
더 높은 숫자 ( 3
예 :)를 입력하여 교체를 수행 할 수 없습니다.
이 기능이 자주 필요한 경우이를 위해 사용자 정의 Query()
기능 을 정의하는 것이 좋습니다. 거기에을 추가하여 :redraw
이미 발생한 교체를 볼 수도 있습니다 .
c
명령을 추가하면 문자열을 바꾸려면 두 단계가 필요합니다. 필요하지 않다고 생각합니다.
내 원래 질문에 대한 모든 찬성에 감사드립니다! 이제 PatternsOnText 플러그인에:SubstituteChoices
명령을 통합 하여 강력한 구현을 제공합니다. 문제의 예는 다음을 통해 해결됩니다.
:%SubstituteChoices/person:/woman:/man:/
:%s/person:/\=get(['woman', 'man'], input('Your choice: ') - 1, submatch(0)) . ':'/c