수색…
매크로 기록하기
매크로를 만드는 한 가지 방법은 그것을 기록 하는 것입니다.
매크로 기록을 시작하고 레지스터에 저장합니다 (이 예에서는 a
사용하지만 일반적으로 텍스트를 뺄 수있는 모든 레지스터가 될 수 있습니다).
qa
그런 다음 매크로에 기록 할 명령을 실행하십시오 (여기에서는 <li>
태그로 줄 내용을 <li>
).
I<li><ESC>A</li>
매크로에 기록하려는 명령이 끝나면 녹음을 중지하십시오.
q
이제, a
저장된 명령의 기록 된 순서를 실행하려면 다음을 사용하십시오.
@a
vim은 기록 된 순서를 반복 할 것입니다.
다음에 마지막으로 사용한 매크로를 반복하고 싶으면 @
두 번 입력하면됩니다.
@@
추가 보너스로 명령 앞에 번호를 입력하면 명령을 여러 번 반복한다는 것을 기억하는 것이 좋습니다. 그래서, 당신은 레지스터에 저장된 매크로 반복 20 시간이를 : a
20@a
vim 매크로 편집하기
때로는 오랜 시간이 걸리는 매크로로 실수를하게되지만, 전체를 다시 기록하는 것보다는 오히려 편집하는 것이 좋습니다. 다음 프로세스를 사용하여이 작업을 수행 할 수 있습니다.
매크로를
"<register>p
와 함께 빈 줄에 놓으십시오.매크로가 레지스터
a
저장된 경우 명령은"ap
.필요에 따라 매크로를 편집하십시오.
커서를 줄의 시작 부분으로 이동하고
"<register>y$
사용하여 매크로를 올바른 레지스터로 끕니다.원래의 레지스터를 다시 사용하거나 다른 레지스터를 사용할 수 있습니다. 레지스터
b
를 사용하려면 명령은"by$
."<register>d$
또는"<register>d$
(사용되지 않는 라인을 삭제합니다)
재귀 매크로
Vim 매크로는 재귀적일 수도있다. 이 옵션은 파일의 끝까지 모든 행 (또는 다른 텍스트 객체)에 대해 작업해야하는 경우 유용합니다.
재귀 매크로를 기록하려면 빈 레지스터로 시작하십시오. (레지스터는 q<register>q
사용하여 비울 수 있습니다.)
시작하고 끝낼 각 라인에서 일관된 시작점을 선택하십시오.
녹음을 마치기 전에 매크로 자체를 마지막 명령으로 호출하십시오. 매크로가 아직 존재하지 않으므로 레지스터가 비어 있어야하므로 아무것도 수행하지 않습니다.
예를 들어, 주어진 텍스트 :
line 1
line 2
line 3
foo bar
more random text
.
.
.
line ???
일반 모드에서 커서를 첫 번째 행에두고 빈 레지스터 a
하면이 매크로를 기록 할 수 있습니다.
qaI"<Esc>A"<Esc>j@aq
그런 다음 @a
를 한 번 호출하면 파일의 모든 행이 큰 따옴표 안에 들어갑니다.
매크로 란 무엇입니까?
매크로는 Vim에 의해 지연없이 "재생"될 일련의 키 스트로크입니다. 매크로는 레지스터 나 변수에 저장하거나 키에 바인딩하거나 명령 줄에서 실행할 수 있습니다.
다음은 줄의 세 번째 word
를 대문자로 사용하는 간단한 매크로입니다.
0wwgUiw
이 매크로는 레지스터 q
기록 될 수 있습니다.
qq start recording into register q
0wwgUiw
q stop recording
또는 레지스터 q
직접 저장됩니다.
:let @q = '0wwgUiw'
다음과 함께 재생할 수 있습니다.
@q
그러나 명령 줄에 직접 입력 할 수도 있습니다.
:normal 0wwgUiw
:normal
명령을 사용하여 즉시 재생할 수 있습니다.
또는 변수에 넣기 :
:let myvar = '0wwgUiw'
다음과 함께 재생할 수 있습니다.
@=myvar
또는 매핑으로 저장 :
nnoremap <key> 0wwgUiw
<key>
를 눌러 재생할 수 있습니다.
나중에 재사용 할 수 있도록 매크로를 저장하려면 삽입 모드에서 입력 할 수 있습니다.
<C-r>q
이것은 레지스터 q
매크로를 삽입합니다 (이 예제에서는 : 0wwgUiw
). 이 출력을 사용하여 예를 들어 vimrc
매크로를 정의 할 수 있습니다 :
let @q='0wwgUiw'
이렇게하면 레지스터 q
는 vim을 시작할 때마다이 매크로로 초기화됩니다.
액션 기록 및 재생 (매크로)
q
명령을 사용하면 vim에서 많은 지루한 작업을 단순화 할 수 있습니다.
예제 1. 배열 시퀀스 생성 (1 - 20).
STEP 1. i
삽입 모드를 입력하기 위해 입력 1
1
단계 2. 다음 작업을 기록하십시오 : "마지막 숫자를 다음 줄에 추가하고 숫자를 증가시킵니다"
-
esc
를 입력하여 입력 모드를 종료하십시오. - 레코드 모드로 들어가기 위해
qa
를 입력하고, 버퍼a
사용a
-
yy
및p
를 입력하여 현재 행을 복사하고 다음 행으로 붙여 넣으십시오. - 숫자를 증가 시키려면
ctrl
+a
를 입력하십시오. -
q
다시 입력하여 기록을 마칩니다.
1
2
3 단계 . 액션을 18 번 재생 합니다.
18@a
를 입력하여 작업 3과 작업 4를 2 단계에서 재생하십시오.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20