Python 가져오기를 확장할 매크로를 작성했습니다.

3314 단어 vimmacrospython

소개



우리는 모두 거기에 있었습니다. 가져오기 목록에 또 다른 항목을 추가했습니다. 오래 전에 80자 제한을 넘었고 목록은 계속 늘어나고 있습니다. 지금 리팩토링하려면 많은 노력이 필요하지만 오래 기다릴수록 더 나빠질 것입니다. 당신은 최악의 파이썬 가져오기 악몽의 끝없는 하향 나선형에 영원히 갇히게 될 운명입니다.

절대 두려워하지 마! Vim 매크로가 여기 있습니다!

좋아요. 다음과 같은 보기 흉한 파이썬 가져오기 문을 바꿀 vim 매크로가 있음을 알려드리려고 왔습니다.

from random import random, randint, choice, randrange, shuffle


...다음과 같이 보이는 관용적이고 읽기 쉬운 코드의 아름다운 조각으로:

from random import (
    random,
    randint,
    choice,
    randrange,
    shuffle
)


매크로



자, 여기 여러분이 기다리던 매크로가 있습니다.0f,F a()<ESC>lDPa<CR><ESC>d0kf(a<CR><ESC>^@q
메타 문자를 웹 브라우저에 붙여넣는 제한 때문에 실제 매크로를 ^M - 및 ^[ -수많은 영광에 붙여넣을 수 없으므로 <CR> 를 모두 교체해야 합니다. <ESC> s 등을 편집기에 붙여넣을 때 각각의 메타 문자와 함께 사용합니다.

이 매크로가 실제로 마지막에 다른 매크로를 호출한다는 것을 눈치채셨을 것입니다. 해당 호출이 없으면 코드는 다음과 같이 됩니다.

from random import (
    random, randint, choice, randrange, shuffle
)


...이전보다 훨씬 나아지지 않았습니다.

다른 매크로는 다음과 같습니다.f r<CR>@q
이것은 재귀 매크로이므로 이 매크로를 레지스터 'q'에 기록하거나 두 매크로 본문의 @q를 기록할 레지스터로 바꾸십시오.

이 두 번째 매크로가 하는 일은 다음 공백을 찾아 캐리지 리턴으로 바꾼 다음 재귀하는 것입니다. 이 작업은 공백이 포함되지 않은 줄에 도달할 때까지 계속됩니다. 이 경우 닫는 괄호가 있는 줄이 됩니다. 따라서 사실상 이것은 <S-j> 의 반대 작업을 수행하여 각 공간에서 줄을 끊습니다.

세상에서 매크로가 무엇을 하는지 알아내려고 여전히 머리를 긁적이는 분들을 위해, 여기에는 한입 크기의 조각으로 나뉩니다.
0f,F - 첫 번째 쉼표를 찾아 이전 공간으로 돌아갑니다. 이렇게 하면 첫 번째 가져온 변수 바로 앞에 커서가 놓입니다.a()<ESC> - 꽤 자명합니다. 한 쌍의 괄호를 추가합니다.lDP - 오른쪽 한 문자로 이동하여 줄의 끝까지 삭제한 다음 커서 앞에 붙여 넣습니다. 이것은 그들 사이의 괄호 뒤에 전체 줄을 넣습니다.a<CR><ESC> - 닫는 괄호 앞에 새 줄을 삽입합니다.d0 - 새 줄을 추가한 후 추가된 공백을 제거합니다(이 매크로는 autoindent를 활성화했다고 가정합니다).kf(a<CR><ESC> - 한 줄 위로 이동하고 여는 괄호로 이동한 다음 그 뒤에 개행을 추가합니다.^@q - 공백이 아닌 첫 번째 문자로 이동하여 'q' 매크로를 실행합니다.

다음은 한 번에 하나의 키를 누를 때 매크로가 어떻게 보일지 보여주는 GIF입니다.

좋은 웹페이지 즐겨찾기