[완료]vim 정규표현식에서요.
글쓴이: puresupe / 작성시간: 수, 2008/09/10 - 8:56오후
특히 .vimrc 다시 작성할떄
map ,1 :b!1
map ,2 :b!2
...
...
...
이런걸 보통
map ,1 :b!1
map ,1 :b!1
map ,1 :b!1
map ,1 :b!1
...
..
쫙 이렇게 복사하고 숫자만 오름차순으로 바꾸고싶더라구요.
근데 제가 알고있는게 치환뿐이라서;;;
혹시 엑셀처럼. 어떤 순열을. 일정한 공차만큼 증가시키면서 하는 정규표현식이 있을까요? ;
Forums:
정규식보다는
정규식보다는 매크로와 Ctrl+A(현재 커서 위에 있는 숫자를 1 증가)를 사용하시면 쉽습니다. 처음에 map ,1 :b!1 줄만 있을 때, 대략 다음과 같은 명령을 쓰면 map ,9 :b!9까지 만들어 낼 수 있을 겁니다.
qqYp0lllll<C-A>lllll<C-A>q7@q
물론 여기서 C-A는 Ctrl+A입니다.
쪼개서 설명하면, 처음 qq는 레지스터 q에 앞으로 입력될 키들을 저장하라는 뜻입니다. (qa, qb 등을 쓸 수도 있지만 보통 편의상 qq로 많이 씁니다.) Yp를 하면 현재 줄을 복사해서 다음 줄에 붙인 뒤 다음 줄로 이동하고, 0을 써서 맨 처음 문자로 이동한 뒤, l을 다섯 번 눌러 숫자 위로 이동한 뒤 Ctrl+A로 그 숫자를 1 증가시킵니다. 그 다음도 마찬가지입니다. 이 상태에서 q를 누르면 매크로 기록이 끝나고, 앞으로 7번 더 이 과정을 반복해야 하므로 7@q로 레지스터 q에 저장된 키 입력을 반복합니다. (앞의 7이 횟수, @가 매크로 반복, q가 레지스터 이름입니다.)
위에서 l을 몇 번 입력하고... 하는 것은 원래 문자열이 어떻느냐에 따라서 다를 수 있으니 그대로 따라하지 마시고 위의 설명을 보시고 직접 확인해 보시길 바랍니다. (당장 map 앞에 탭 문자만 붙어 있어도 동작하지 않을 수 있습니다.) 중요한 것은 q[레지스터]/q를 사용해서 레지스터에 키 입력을 저장하고, Ctrl+A를 눌러서 숫자를 증가시키며, [횟수]@[레지스터]를 사용해서 저장된 키 입력을 반복하는 것입니다.
vim은 알면 편하게 쓸 수 있는 기능이 많습니다. 매크로 같은 것은 알기 어렵지 않으니 직접 써 보시면서 어떻게 쓰면 될지 감을 잡아 보세요. ;)
감사합니다. 매크로.
감사합니다. 매크로. 이렇게보니 정말 유용하게 쓸수있는거군요.
전 그런 경우.. seq로
전 그런 경우.. seq로 만들어낸 다음에 정규치환합니다.
열 작업을 할 경우에는 엑셀을 띄우는게 편하긴 하죠 ㅎㅎ
댓글 달기