Vim에서 이동을 포함한 마지막 일반 모드 명령 반복


25

Vim에서을 사용 .하면 마지막 일반 모드 명령을 반복 할 수 있습니다. 예를 들면 다음과 같습니다.

dd.

줄을 두 번 삭제합니다.
하지만 내가 입력하면

5j.

커서는 10 줄 아래로 이동하지 않습니다. 마지막 일반 모드 명령, 특히 이동을 어떻게 반복합니까?

답변:


14

vim불행히도 이것을하지 않습니다. 가장 좋은 방법은 카운트가있는 이동 명령을 반복 하는 repmo.vim 플러그인을 설치 하는 것입니다.


11

바닐라 바이러스에서도 가능하지만 적용 사례는 사용 사례에 따라 다릅니다. 키를 몇 번 더 반복해서 반복 할 수 있으므로 반복 횟수가 얼마나 자주 필요한지.


옵션 1 : 명령 모드 작동으로 전환

예를 들어 5 줄 아래로 이동하면 다음을 수행 할 수 있습니다.

  1. 를 입력 :norm 5j하면 커서가 5 줄 아래로 이동합니다
  2. @:운동을 반복하는 데 사용

:norm 정상을 나타내며, 다음 문자열은 정상 모드에서 키 입력으로 간주됩니다


옵션 2 : 매크로 사용

  1. qa(매크로를 레지스터에 저장 a하면 qb, 와 같은 자신의 레지스터를 선택할 수 있습니다 qc)
  2. 5j
  3. q (마침 기록 매크로)
  4. @a녹음 작업을 반복하는 (대체 a당신이 고른 레지스터 이름, 예를 들어와. @b, @c)

매크로를 설정하려면 더 많은 영적 힘이 필요하지만 최신 작업으로 재정의하지 않고 여러 레지스터를 다른 레지스터에 저장할 수 있다는 점에서 더 반복적입니다.


7

실제로 마지막 일반 모드 명령이 아니라 .마지막 변경을 반복합니다 . Paul이 말했듯이 모션을 반복하려면 플러그인이 필요합니다.

" :help ."를 참조하십시오 .


4

로 변경 사항을 반복 할 수 있습니다 .. ;명령 으로 움직임을 반복 할 수 있습니다 . 이 명령은 새로운 것으로 보이며 다른 답변에서 언급 된 repmo.vim 스크립트와 유사한 기능을 수행합니다.

예를 들어 두 번째 다음으로 이동하려면을 c누릅니다 2fc. 그런 다음 다시 입력하려면을 입력하십시오 ;.


11
;새로운 것이 아닙니다. 표준 vi 명령입니다. Vi는 마지막 f/ F/ t/ T모션 의 유형과 대상 문자 (숫자 인수는 아님)를 기억 하고 ;반복합니다. 그러나 다른 동작은 반복하지 않습니다.
불꽃 폭발

이것은 내가하고 싶었던 것을 성취했습니다! 고맙습니다. 설명을 해주셔서 감사합니다.
Paul

0

변경하려는 라인을 선택하고 마지막 일반 도트 명령을 실행할 수 있습니다

v5j .............. visual select next 5 lines
:'<,'>norm! .      normal mode execute over selection last command '.'
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.