[완료] vim 에서 숫자치환시 자동증가가 가능할까요

fjoker의 이미지

안녕하세요

vi에서 작업중 노가다성 일은 모두 단축이 가능할꺼 같은 느낌에 질문을 올려봅니다

예를 들어
================
vi[0]
vi[0]
vi[0]
vi[0]
================
위와 같은 상황일때
================
vi[0]
vi[1]
vi[2]
vi[3]
================
아래처럼 숫자를 자동증가시키는 치환법이 있을까요??

그럼 더운 주말에 수고하세요~
읽어주셔셔 감사합니다.

송효진의 이미지

http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=40650

익숙하신 언어로 하나 만드시면 됩니다.

emerge money
http://wiki.kldp.org/wiki.php/GentooInstallSimple - 명령어도 몇개 안되요~

cmoh1110의 이미지

아래와 같이 함수를 정의한 다음에요,

:func! Myfunc()
:  execute ":s/vi\\[0\\]/vi[" . g:count . "]/g"
:  let g:count = 0  => let g:count = g:count+1 이 맞겠네요.. ^^;
:  endfunc

아래와 갈이 호출해 주심 됩니다.

:let g:count =0
:%call Myfunc()
_서지원의 이미지

vim에 increment 라는 이름의 plugin이 있습니다.

http://www.vim.org/scripts/script.php?script_id=1199

eungkyu의 이미지

일단 0자리에 커서를 놓은 다음
qqvyjpX<c-a>q@q@@@@5@@
<c-a>는 control-a입니다.

물론 자리수가 두개 이상으로 늘어난다든지 하면 좀 더 정교하게 매크로를 만들어야 됩니다만, 그건 그 때 가서 다시 생각해봐야죠 ;;

fjoker의 이미지

답변주신 송효진님, maenani님, _서지원님, eungkyu님 정말 감사합니다~~~!!!!!!!

maenani님의 답변을 약간 응용해서 사용하고 있습니다. 대만족 입니다.

아래는 제가 약간 변형시켜놓은 설정입니다. 혹시 필요하신분이 계실까봐 적어놉니다

===================================
let g:count=0
let g:name=""

:func! Myfunc()
: execute ":s/\\(".g:name."\\)\\d\\+/\\1".g:count."/g "
: let g:count = g:count+1
: endfunc
====================================

int1 = vi[1]
int2 = vi[1]
int3 = vi[1]
처럼 한라인에 숫자가 두개이상 있을경우에는
:let g:name="vi\\[" 로 조건문을 설정해준뒤에 사용합니다.

음.. 아예 g:name 부분을 빼버리고
: execute ":s/\\d\\+/".g:count."/gc "
로 해서 yes or no 로 해버리고 싶은데 이럴경우 no로 건너뛰어도 count가 +1 이 되어버리더군요
return 값을 받아서 그에 따라 count값을 +1 해줄수도 있을까요 --;

좋은하루되시고 건강하세요~~~~~~~

rkdskd의 이미지

조금더 유용한. 그렇지만 복잡한 script를 원하시면 visincr.vim를 검색해서 사용하셔도 될 것 같습니다.

http://www.vim.org/scripts/script.php?script_id=670

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.