매크로에 마지막 동작 (.) 저장


9

사용 사례

나는 정상 모드입니다. 매크로 기록에 대해 명시 적으로 생각하지는 않았지만 단일 명령 변경을 수행합니다. 이제 도트를 사용하여이 작업을 반복 할 수 있습니다.

매번 전체 명령을 입력하는 대신 나중에 사용하기 위해 매크로에 저장하는 것이 유용한 조치라는 것을 알게되었습니다. 도트를 사용하여이 명령이 필요한 모든 변경 사항에 참석하거나 나중에 매크로로 저장하여이 명령을 계속 편집하고 사용할 수 있습니다.

후자는 내가하고 싶은 일이지만, 내가 생각하는 가장 쉬운 방법은 쉽지 않습니다. 변경을 취소하고 매크로 기록을 시작한 다음 명령을 다시 입력하여 필요한 변경을 수행하고 매크로 기록을 중지하십시오.

내가 지금까지 시도한 것 :

매크로에서 점을 기록하면 점이 기록되고 점이 수행하는 변경은 기록되지 않으므로 작동하지 않습니다. 예를 들어, 점에 저장된 명령 d5w이 매크로 기록을 시작하고 매크로를 실행할 때마다 5 개의 단어가 삭제 될 것으로 예상하고. 매크로는 명령 d5w이 아니라 점으로 표시 됩니다. 즉, 매크로를 기록한 후 다른 단어를 d3w변경하면 (예 : 단어 3 개를 사용하여 삭제 하고 마지막으로 수행 한 변경 사항) 매크로를 실행하면 매크로가 삭제됩니다. 그냥 달리기 때문에 5가 아닌 단어 .)


나는 당신이하고 싶은 일과 왜 매크로로 무엇을하지 않는지 이해하려고 애 쓰고 있습니다.

1
@DrEval OP는 일반 모드 명령을 수행 한 후에 매크로에 저장 했어야한다는 것을 인식하고 매크로를 기록하는 동안 다시 입력하지 않아도됩니다.
Rich

답변:


2

Vim은 일반 모드 명령의 기록을 유지하지 않습니다. 일반 모드 기록의 기록을 유지하려면 다음을 사용하여 파일에 저장하십시오. https://vi.stackexchange.com/a/587/13848

보통 모드 명령은 일반적으로 짧으므로 사람들은 보통 모드로 입력하고 매크로를 만들려고하지 않습니다. 그러나 일반 모드 명령으로 매크로를 만들려면 매크로를 모드 명령으로 변환 Ex한 다음 @wmmso가 지적한대로 매크로에 저장할 수 있습니다. norm명령 을 사용하여이를 수행 할 수 있습니다 . 따라서 현재 커서 위치에서 시작하는 2 단어를 삭제하고 Exmode use 에서 일반 모드 명령을 사용하십시오 :norm d2w. (참고 : http://vimdoc.sourceforge.net/htmldoc/various.html#:norm , 범위에서 일반 명령 실행 )

Ex버퍼에 전체 명령을 입력하고 실제로 올바른지 확인하고 명령 행 히스토리에 저장할 수 있으므로 복잡한 명령 인 경우 모드 명령 을 사용하는 것이 좋습니다 .

ex 모드에서 일반 모드 명령을 사용 했으므로을 사용하여 history와 같은 명령을 q:찾은 다음 "ay$매크로를 저장하려는 명령 행이 포함 된 행에서을 사용하여 레지스터로 명령 을 복사 할 수 있습니다. 그런 다음 매크로를 실행하려면 다음을 사용하여 매크로를 실행할 수 있습니다.@a


커맨드 라인에서 일반 모드 명령을 어떻게 작성 하시겠습니까? 예를 들어 d2w?
Peeyush Kushwaha

답변에 설명이 추가되었습니다. 도움이 되나요?
alpha_989

0

":"레지스터의 내용 (방금 수행 한 내용)을 다른 레지스터에 복사하십시오 (예 : 레지스터 a :

:let @a = @:

당신은 그것을 사용하여 다시 실행할 수 있습니다

@a

이것은 vim 7.4에서 작동하지 않습니다. ::command-name-goes-hered2w
Peeyush Kushwaha

2
이 솔루션은 일반 모드 명령이 아닌 ex 명령에만 작동합니다. 마지막 일반 모드 명령을 보유하는 레지스터를 알지 못합니다. 유용 할 것입니다
Steve
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.