나는 그것이 오래된 질문이라는 것을 알고 있으며 @ mykola-golubyev의 방법은 분명히 OP 질문의 특정 경우에 대한 최선의 대답입니다 (동일한 var 이름을 가진 여러 블록을 가질 가능성이있는 난독 화 된 코드를 거치고 있다고 가정합니다) ; 그러나 Google 검색에서 여기에 오는 많은 사람들이 VIM에서 변수 이름을 변경하는 덜 상황 별 방법을 찾는 것과 같은 질문 이름을 사용하면 더 간결 할 수 있습니다.
나는 아무도 이렇게 제안하지 않았다는 것에 놀랐다.
*
:s//
NEWNAME /gc
는 *
과 동일 gn
는 커서 아래의 단어의 다음 선두로부터 검색하고 마지막 패턴을 검색하게 당신은 대체 명령에서 검색 패턴을 생략 할 때, VIM은이 검색 할 패턴이다 가정 -.
소량의 var 사본의 경우 더 빠른 사본 :
*
cw
NEWNAME <esc>
그런 다음 n.
다른 항목에 대해 반복
발생을 검색 cw
하기위한 명령입니다 변경 단어 , n
마지막 검색 용어의 다음 항목으로 이동하고 .
(있는 마지막 명령 반복 NEWNAME으로 변경 단어 )
(이 모든 것을 아는 크레딧은 Reddit의 @doomedbunnies 로 이동합니다 )
또 다른 멋진 트릭은 다음과 같습니다. ( @ nobe4 크레딧 )
*
cgn
NEWNAME <esc>
그런 다음 .
다른 항목에 대해 반복
cgn
"(다음 항목 찾기)의 결과를 변경하십시오"입니다. 이제이 명령 이 마지막 명령n
이므로 다음 항목으로 이동 하는 데를 사용할 필요가 없습니다 . 따라서 다시 스트로크 횟수가 줄어들고 더 중요한 것은 n
및 .
. 그러나 분명히 이것은 발생을 건너 뛸 수있는 방법이 없다는 단점이 있습니다.
다음은 몇 가지 이점입니다.
- 매핑이없고, .vimrc (또는 init.vim)가 없으므로 어떤 VIM 복사본에서도 사용할 수 있습니다 (예 : VPS를 구성하는 방법이 '빠른'목적을 무력화하는 일부 VPS 또는 친구의 컴퓨터에서 빠른 작업) )
- 사용
*
또는 gn
단어 선택이 매우 빠르게 - 하나의 키 입력 (물론,의 1.5을 가정 해 봅시다)
- 를 사용
*
하거나 gn
다른 단어 안에 일치하는 항목이 없는지 확인합니다 :%s/<C-R>//gc
. :%s/\<OLDNAME\>/NEWNAME/gc
손으로 타이핑하는 것 보다 낫습니다 . 저는 개인적으로 \<
단어를 전체 단어로만 제한 하는 데 사용하는 것을 잊는 경향이 있습니다.
- 스코프를 사용하지 않으면
n
원치 않는 일치를 건너 뛰기 위해 몇 번의 추가 스트로크 만 발생합니다. 아마 범위를 제한하는 데 필요한 추가 스트로크보다 더 적을 것입니다. 정상적인 상황에서 변수는 어쨌든 특정 코드 블록으로 다소 지역화 될 가능성이 큽니다.