1. 2 단계 대체를 사용하여 동작을 달성하는 것은 어렵지 않습니다.
:,$s/BEFORE/AFTER/gc|1,''-&&
먼저, 현재 행에서 시작하여 파일 끝까지 각 행에 대해 대체 명령이 실행됩니다.
,$s/BEFORE/AFTER/gc
그 :substitute
명령을 사용하여 동일한 검색 패턴, 대체 문자열 및 플래그를 사용하여 명령을 반복합니다 :&
(참조 :help :&
).
1,''-&&
그러나 후자는 파일의 첫 번째 행에서 이전 컨텍스트 표시가 설정된 행까지의 행 범위에서 1을 뺀 범위에서 대체를 수행합니다. 처음부터:substitute
명령은 실제 대체를 시작하기 전에 커서 위치를 저장 주소 ''
가 지정된 행은 대체 명령이 실행되기 전에 현재 행이었던 행입니다. ( ''
주소는 '
의사 표시를 나타냅니다
. 자세한 내용 은 :help :range
및 참조 :help ''
)
두 번째 명령 ( |
명령 구분 기호 뒤 — 참조
:help :bar
)은 첫 번째 명령 에서 패턴 또는 플래그가 변경 될 때 변경이 필요하지 않습니다.
2. 타이핑을 저장하기 위해 명령 줄에서 위의 대체 명령의 골격을 가져 오기 위해 다음과 같이 일반 모드 매핑을 정의 할 수 있습니다.
:noremap <leader>cs :,$s///gc\|1,''-&&<c-b><right><right><right><right>
후행 <c-b><right><right><right><right>
부분은 커서를 명령 줄의 시작 부분 ( <c-b>
)으로 이동 한 다음 오른쪽으로 4 자 ( <right>
× 4)로 이동하여 처음 두 개의 슬래시 기호 사이에 배치하여 사용자가 검색 패턴을 입력 할 수 있도록하는 데 필요합니다. . 원하는 패턴과 교체가 준비되면을 눌러 결과 명령을 실행할 수 있습니다
Enter.
( 위의 매핑 //
대신에 ///
패턴을 입력하는 것을 선호하는 경우 오른쪽 화살표를 사용하여 커서를 이미 존재하는 분리 슬래시 시작 위로 이동하는 대신 분리 슬래시를 직접 입력 한 다음 대체 문자열을 입력하는 것을 고려할 수 있습니다. 교체 부품.)
\vpattern
- '매우 매직'패턴 : 영숫자가 아닌 문자는 특수 정규식 기호로 해석됩니다 (이스케이프 필요 없음)