Vim의 "점"명령

Don't Repeat Yourself의 원리에 대해 이미 들어보셨을 것입니다.

소프트웨어 엔지니어링에서 이것은 모든 종류의 반복을 줄이는 데 초점을 맞추는 소프트웨어 개발 원칙입니다. 책 전체에서 볼 수 있듯이 Vim에는 다양한 종류의 작업을 자동화하는 여러 가지 방법과 명령이 있으므로 작업을 반복할 필요가 없습니다.

반복을 피하는 것과 관련하여 가장 강력한 Vim 명령 중 하나는 .("점") 명령입니다.

일반 모드에서 .를 치면 실행한 마지막 기본 Vim 명령이 반복됩니다.

커서 앞으로 5개 단어를 삭제하고 싶다고 가정해 봅시다. 이미 알고 있듯이 5dw를 누르면 완료됩니다. 그러나 때로는 단어의 수를 정신적으로 계산하는 것이 편리하지 않습니다.

대안은 dw를 사용하여 한 단어를 삭제하는 것입니다. 그런 다음 ....를 눌러 점 명령을 네 번 호출합니다. 이 경우 최신 dw 명령을 4번 더 반복하면 단어를 세지 않고도 동일한 효과를 얻을 수 있습니다.

dd를 사용하여 한 줄을 삭제하고 4줄을 더 삭제하려면 4.를 누르는 대신 ....를 실행할 수도 있습니다. 그것도 작동합니다.

점 명령으로 실제로 반복 가능한 것을 이해하는 것이 매우 중요합니다. 예를 들어 다음과 같은 샘플 코드가 있는 경우:

my $i
my $learn
my $quickly

커서가 첫 번째 줄에 있습니다. 세 줄 모두에 ;를 추가하려고 합니다. 다음과 같은 명령을 실행할 수 있습니다. A;<Esc>j
A – 삽입 모드에서 첫 번째 줄 끝에 커서를 놓습니다.
; – 를 눌러 실제로 삽입한 다음 Esc를 눌러 일반 모드로 돌아갑니다.
j – 한 줄 아래로 이동

이제 커서가 두 번째 줄에 있습니다. 그런 다음 .를 눌러 다음(두 번째) 줄에서 변경을 반복하면 작동하지 않습니다. 얻을 수 있는 것은 다음과 같습니다.

my $i;
my $learn;
my $quickly

커서는 여전히 세 번째 줄이 아니라 두 번째 줄에 있지만 ;가 추가됩니다.

이것은 원래 명령의 이 부분만 반복되었다는 결론에 이르게 합니다. A;<Esc> .

자, 왜 그럴까요?

점 명령으로 버퍼의 내용을 변경하는 명령을 반복할 수 있다는 것을 기억하는 것이 중요합니다.

변경은 텍스트를 수정하는 데 사용할 수 있는 모든 명령입니다. 이 예에서는 명령j이 반복되지 않고 커서가 세 번째 줄로 이동하지 않은 경우가 있었습니다.
j와 같은 명령을 동작(또는 명사)이라고 하며 텍스트 자체에는 영향을 주지 않습니다. 명령j은 커서만 움직일 뿐 텍스트는 변경되지 않으므로 반복할 수 없습니다.

모국어의 문법을 생각해 보십시오. 명사가 아니라 동사가 일종의 행동을 표현하는 데 사용됩니다. Vim에서도 마찬가지입니다. 명사(또는 동작)는 텍스트에 영향을 줄 수 없으므로 점 명령으로 반복할 수 없습니다.

버퍼의 텍스트에 영향을 줄 수 있는 모든 명령을 보려면 :help change.txt를 살펴보십시오.

물론 여러 변경 사항을 반복하거나 움직임과 변경 사항의 조합을 반복하려는 경우 이를 매크로에 쉽게 기록할 수 있습니다.

내 책Mastering Vim Quickly: From WTF to OMG in no time의 매크로 장(무료 다운로드)에서 매크로에 대해 필요한 모든 것을 배울 수 있습니다.

아직도 읽고 계십니까?

매주 화요일 나는 내 Mastering Vim Quickly Newsletter 구독자인 6K+ Vim 팬에게 Vim에 대한 멋진 팁을 보냅니다. 무료로 가입하세요.


이 게시물은 원래 my blog에 게시되었습니다.

좋은 웹페이지 즐겨찾기