[완료]vim 정규표현식에서요.

puresupe의 이미지

특히 .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
...
..
쫙 이렇게 복사하고 숫자만 오름차순으로 바꾸고싶더라구요.
근데 제가 알고있는게 치환뿐이라서;;;

혹시 엑셀처럼. 어떤 순열을. 일정한 공차만큼 증가시키면서 하는 정규표현식이 있을까요? ;

lifthrasiir의 이미지

정규식보다는 매크로와 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은 알면 편하게 쓸 수 있는 기능이 많습니다. 매크로 같은 것은 알기 어렵지 않으니 직접 써 보시면서 어떻게 쓰면 될지 감을 잡아 보세요. ;)

puresupe의 이미지

감사합니다. 매크로. 이렇게보니 정말 유용하게 쓸수있는거군요.

lacovnk의 이미지

전 그런 경우.. seq로 만들어낸 다음에 정규치환합니다.

열 작업을 할 경우에는 엑셀을 띄우는게 편하긴 하죠 ㅎㅎ

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.