줄이 많은 파일이 있습니다. 한 줄에서 작업을 수행하는 매크로를 기록했습니다. 파일의 나머지 모든 줄에서 해당 매크로를 반복하고 싶습니다. 이 작업을 수행하는 빠른 방법이 있습니까?
Ctrl + Q를 시도하고 일련의 줄을 강조 표시하고 @@를 눌렀지만 트릭을 수행하지 않는 것 같습니다.
줄이 많은 파일이 있습니다. 한 줄에서 작업을 수행하는 매크로를 기록했습니다. 파일의 나머지 모든 줄에서 해당 매크로를 반복하고 싶습니다. 이 작업을 수행하는 빠른 방법이 있습니까?
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 을 입력 하면 자세한 내용을 볼 수 있습니다.
:norm! @a
:
행을 강조 표시 한 후을 누르면 Ex 입력 행이 읽히고 :'<,'>
Kevin이 제안한 나머지 부분을 추가합니다. 최종 명령은 다음과 같습니다 :'<,'>norm! @a
..
!
사용자가 키를 다시 매핑하지 않도록합니다. 필요하지는 않지만 모든 사람에게 적합한 답변이 필요합니다.
당신은 또한 이것을 할 수 있습니다 :
일반 모드에서 :
[number of times to apply the macro] @ [register]
예를 들면 다음과 같습니다.
1000@q
레지스터 q의 매크로를 다음 1000 행에 적용합니다.
업데이트 : 허용 된 답변 이 훨씬 낫습니다.
업데이트 : @ kevinliu가 지적했듯이 매크로를 끝내고
j
다음 줄로 가길 원할 것 입니다.
:%norm! @a
와vGG :norm! @a
j
다음 줄로 내려가는 명령으로 끝나야한다고 지적해야합니다. 그렇지 않으면 동일한 줄에 적용하려고 시도합니다.
RangeMacro라는 플러그인도 있으며 원하는 것을 정확하게 수행합니다! 이름으로 추측 할 수없는 모든 사람이하는 것 : 시각적 선택 또는 : 40,50 / : +10에 상관없이 주어진 범위의 각 줄에 대해 기록 된 매크로를 반복합니다.