매크로를 사용하여 기록 할 때 q
다음을 입력 할 수 있습니다.
q
일반 또는 시각 모드 인 경우 녹화를 중지합니다.<c-o>q
삽입 모드에있는 경우 녹음을 중지합니다...
매크로가 명령 모드에서 종료되면 녹화를 어떻게 중지합니까?
:'<,'>s/toBeReplaced//g
한 다음 커서를 둘 사이에 놓아서 //
입력해야 newString<cr>
합니다. :)
매크로를 사용하여 기록 할 때 q
다음을 입력 할 수 있습니다.
q
일반 또는 시각 모드 인 경우 녹화를 중지합니다.<c-o>q
삽입 모드에있는 경우 녹음을 중지합니다...
매크로가 명령 모드에서 종료되면 녹화를 어떻게 중지합니까?
:'<,'>s/toBeReplaced//g
한 다음 커서를 둘 사이에 놓아서 //
입력해야 newString<cr>
합니다. :)
답변:
또 다른 해결 방법은 명령 줄 모드에있을 때을 사용 Ctrl-f
하고을 눌러 q
기록을 중지하는 것입니다.
Ctrl-f
일반 모드에서 명령을 편집 할 수있는 명령 행 창을 열 수 있습니다. 명령의 유효성을 검사하려면 간단히 enter를 사용하십시오.
따라서 다음과 같은 것을 추가 한 후 :
cnoremap <c-q> <c-f>i<c-o>q
에서 명령 모드에서 매크로 기록을 중지 .vimrc
할 수 있습니다 <c-q>
.
플로랑
^F
매크로 끝에서 <Cf> 문자 ( ) 를 제거해야 합니까? 적어도 그것이 내가 보는 것입니다.
qqSTARTMACRO:STARTCOMMANDLINEPART<c-f>i<c-o>q
하므로 명령 부분을 입력하는 동안 실제로 기록이 중지되었습니다. 매크로를 사용하려면 @qFINISHYOURCOMMAND<cr>
다음을 수행하십시오. 매크로 를 편집 할 필요가 없습니다. 불행히도 이것은 비주얼 모드에서 작동하지 않는 것 같습니다 (또는 선택이 느슨해집니다). 또는 내가 놓친 것이 있습니까?
@q
명령 시작시 범위가 추가되었습니다 ....'<,'>
:
'<,'>
명령을 확인할 때 지정된 범위 (예 :)가 선택 내용 과 여전히 일치합니다.
그것을하는 한 가지 방법 :
qq
... 다른 문자)ESC
,있는 CmdLine 모드의 나가 q
매크로를 종료합니다.ESC
에서를 제거하십시오 q
(*) : 버퍼에 붙여넣고, ^[
캐릭터를 제거하고 , 전체 내용을 다시 (문자 방향으로) 선택하고 다시 등록하기 위해 다시 잡아 당길 수 q
있습니다.@q
.기본적으로 매크로는 레지스터에 저장되기 때문에 매크로를 약간 "후 처리"합니다.
(*) 레지스터에 저장된 매크로에서 마지막 문자를 제거하는 빠른 방법 q
은 다음과 같습니다.
:let @q = @q[:-2]
:let @q = @q[:-2]
시겠습니까? 특히 어떻게 [:-2]
작동합니까? :-)
유스 케이스에 대한 의견을 읽은 후 매크로 대신 키 맵핑을 사용할 수있는 것처럼 보입니다.
내 .vimrc 에이 줄이 있습니다 (어디에서 찾았는지 기억하지 마십시오).
nnoremap <Leader>s :%s/\<<C-r><C-w>\>//g<Left><Left>
설명 된 유스 케이스와 유사한 효과가 있으므로 명령 행에 표시되므로 대체를 입력하고 Enter 키를 누르는 것뿐입니다.이 경우 커서 아래에 있던 단어의 모든 단어를 바꾸십시오. .
현재 블록 내에서 교체하기 위해 다음과 같은 것이 작동한다고 생각합니다.
nnoremap <Leader>s m'va{<ESC>``:'<,'>s/\<<C-r><C-w>\>//g<Left><Left>
물론 원하는 키에 매핑 할 수 있습니다.
위의 작업 : 이름이없는 마커를 사용하여 현재 위치를 표시하고, 현재 블록을 시각적으로 선택하고, 비주얼 모드를 종료하고, 커서를 저장된 위치 (시각 선택 마커가 여전히 설정되어 있음)로 되돌리고, 명령 모드를 시작하고 대체 명령을 입력하십시오. 을 사용하여 커서 아래에 있던 단어를 삽입하고 <C-r><C-w>
커서를 위치하여 대체를 입력하십시오.
toBeReplaced
패턴은 "커서 아래 단어"만큼 단순하지 않으므로 이동 중에 만들 수있는 작고 구체적인 매크로가 필요합니다. 그리고 다시 :지도에 대해 너무 구체적 : \ 감사합니다 :)
toBeReplaced
부분 으로 자동으로 가져옵니다 (커서 아래 현재 단어 대신).
va{:s/<C-r>0//g<Left><Left>
이렇게하면 미리 필요한 패턴을 잡아 당긴 다음 매핑 된 키를 눌러 해당 패턴을 현재의 무언가로 바꿀 수 있습니다 블록.