나는 새롭지 않은 모든 vim 전용 기능을 배웠다. vim 전에 vi를 배웠고이 솔루션은 vi-ish 편집기에서 작동합니다. vim 기능을 사용하는 더 나은 솔루션이있을 수 있습니다.
이 경우 일반적으로 수행 할 작업은 위의 일부를 수행하는 여러 개의 키를 바인딩하는 :map
명령을 사용하는 것입니다. 잠시 동안없이 살 수있는 키를 선택해야합니다. 나는 이것을 위해 종종 g
과 v
을 사용합니다. @Neil Forrester는 기능 키를 사용하여 제안 했으므로 좋은 아이디어입니다.
이제 성냥 그룹을 나타내는 괄호가있는 정규 표현 패턴을 보여 줬습니다. (vi 나 vim에서 실제로 "magic"으로 만들기 위해서는 각각의 괄호 앞에 백 슬래시를 넣어야합니다 (문서 참조). 그러나이 해결책을 위해서 나는 대신 f
명령을 사용할 것입니다. (f) inds a 지정된 문자; 및/또는 t
명령은 문자를 un (t)로 점프합니다. f
은 문자 위로 점프합니다. 문자 바로 앞에 t
이 점프합니다. 따라서 f"
을 사용하면 문자열의 첫 번째 큰 따옴표로 건너 뛴 다음 t"
을 사용하면 두 번째 큰 따옴표 바로 앞까지 이동할 수 있습니다.따라서 시퀀스 f"lyt"
은 첫 번째 큰 따옴표를 찾은 다음 한 문자를 오른쪽으로 이동시킨 후 다음 큰 따옴표까지 모든 것을 꺼냅니다. 그러나, yank 된 텍스트를 26 개의 명명 된 버퍼 중 하나에 저장하자. f"l"ayt"
그냥 ""을 사용하여 명명 된 버퍼 "a"를 참조해야하기 때문에 조금 혼란 스럽지만 우리가 찾고있는 많은 다른 "
문자가 있습니다.
또한 "지도"내에서 Enter 키의 키 입력을 기록해야 할 수 있습니다. 그렇게하는 방법은 Ctrl + V를 누른 다음 Enter 키를 누르는 것입니다. 이 경우 ^M
으로 표시됩니다. 아래의 코드에서 ^M
이 표시되면 실제 ^
다음에 실제 M
이 나오지 않고 Enter 키를 나타내는 단일 키를 의미합니다.
이제 우리는 두 가지 주요 매핑을 만들 수 있습니다. 의 1과 2, g
이 단계를 수행하기위한 조치 할 v
을 결합하자 3과 4
:map v /^Description "/^Mf"l"ayt"
:map g /^TEXT "/^Mf"ldt""aP
그래서 그냥 수 없습니다에서 Ctrl + V를 사용하여 입력보다는 실제로^M을 입력, 잊지 마세요 위의 내용을 편집하지 않고 복사/붙여 넣기하십시오.
이제 1 단계와 2 단계를 수행하려면 v
키를 사용하고 3 단계와 4 단계를 수행하려면 g
키를 사용하십시오. 두 키를 번갈아 누르면 빠르게 처리 할 수 있습니다.
vim에서 스크립팅을 사용하여이 작업을 수행하는 방법이있을 수도 있지만, 반면에 스크립트를 작성하려면 간단한 Python 스크립트 (또는 원하는 언어)를 작성하는 것이 좋습니다. 위의 두 개의 주요 매크로는 vim에서 이런 종류의 작업을 수행하는 빠른 방법을 제공합니다.
vim에는 입력 할 때 키를 녹음 할 수있는 기능이 있습니다. 이런 종류의 매크로를 빨리 만들 수 있습니다.
이것은 내가 찾고있는 대답이었다. 내가 필요한 핵심 명령은 f와 t였다. 나는 실제로 "삭제"를 "홱 잡아 당기는"것으로 바꾸어야했다. 그렇지 않으면 완벽했다. 정말 고마워. – z4ce
확실히, "yank"가 "delete"보다 낫습니다. 왜 "텍스트"를 넣을 때 "설명"에서 텍스트를 제거하고 싶다고 생각하는지 확신 할 수 없습니다. 나는 미래의 독자들이 혼란스러워하지 않도록 답을 편집 할 것이다. – steveha