줄이 많은 파일이 있습니다. 한 줄에서 작업을 수행하는 매크로를 기록했습니다. 파일의 나머지 모든 줄에서 해당 매크로를 반복하고 싶습니다. 이 작업을 수행하는 빠른 방법이 있습니까?
Ctrl + Q를 시도하고 일련의 줄을 강조 표시하고 @@를 눌렀지만 트릭을 수행하지 않는 것 같습니다.
답변
Ex 모드에서 일반 명령을 사용하여 여러 줄 / 모든 줄에서 매크로를 실행하십시오.
라인 5에서 10까지 레지스터 a 에 저장된 매크로를 실행합니다 .
:5,10norm! @a
파일 끝을 통해 5 행의 레지스터 a 에 저장된 매크로를 실행 하십시오.
:5,$norm! @a
레지스터 a 에 저장된 매크로 를 모든 행 에서 실행하십시오 .
:%norm! @a
모든 라인 일치 패턴 에 대해 레지스터 a 에서 매크로 저장소를 실행하십시오 .
:g/pattern/norm! @a
시각적으로 선택된 라인에서 매크로를 실행하려면 원하는 영역이 선택 될 때까지 V 와 j 또는 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를