[vim] Vim에서 매크로를 한 줄에 어떻게 적용합니까?

줄이 많은 파일이 있습니다. 한 줄에서 작업을 수행하는 매크로를 기록했습니다. 파일의 나머지 모든 줄에서 해당 매크로를 반복하고 싶습니다. 이 작업을 수행하는 빠른 방법이 있습니까?

Ctrl + Q를 시도하고 일련의 줄을 강조 표시하고 @@를 눌렀지만 트릭을 수행하지 않는 것 같습니다.



답변

Ex 모드에서 일반 명령을 사용하여 여러 줄 / 모든 줄에서 매크로를 실행하십시오.

라인 5에서 10까지 레지스터 a 에 저장된 매크로를 실행합니다 .

:5,10norm! @a

파일 끝을 통해 5 행의 레지스터 a 에 저장된 매크로를 실행 하십시오.

:5,$norm! @a

레지스터 a 에 저장된 매크로 를 모든 행 에서 실행하십시오 .

:%norm! @a

모든 라인 일치 패턴 에 대해 레지스터 a 에서 매크로 저장소를 실행하십시오 .

:g/pattern/norm! @a

시각적으로 선택된 라인에서 매크로를 실행하려면 원하는 영역이 선택 될 때까지 Vj 또는 k를 누릅니다 . 그런 :norm! @a다음 다음 입력 라인이 표시되고 관찰하십시오.

:'<,'>norm! @a

vim에서 : help normal 을 입력 하면 자세한 내용을 볼 수 있습니다.


답변

global 을 사용 하여 ‘pattern’을 포함하는 모든 행에서 매크로 ‘a’를 실행하십시오.

:g/pattern/normal! @a

도움이 필요하면 다음을 확인하십시오 :help global..


답변

당신은 또한 이것을 할 수 있습니다 :

일반 모드에서 :

[number of times to apply the macro] @ [register]

예를 들면 다음과 같습니다.

1000@q

레지스터 q의 매크로를 다음 1000 행에 적용합니다.

업데이트 : 허용 된 답변 이 훨씬 낫습니다.

업데이트 : @ kevinliu가 지적했듯이 매크로를 끝내고 j다음 줄로 가길 원할 것 입니다.


답변

RangeMacro라는 플러그인도 있으며 원하는 것을 정확하게 수행합니다! 이름으로 추측 할 수없는 모든 사람이하는 것 : 시각적 선택 또는 : 40,50 / : +10에 상관없이 주어진 범위의 각 줄에 대해 기록 된 매크로를 반복합니다.

참조 http://www.vim.org/scripts/script.php?script_id=3271를


답변