[완료] vim 에서 숫자치환시 자동증가가 가능할까요
글쓴이: fjoker / 작성시간: 토, 2007/07/07 - 11:27오전
안녕하세요
vi에서 작업중 노가다성 일은 모두 단축이 가능할꺼 같은 느낌에 질문을 올려봅니다
예를 들어
================
vi[0]
vi[0]
vi[0]
vi[0]
================
위와 같은 상황일때
================
vi[0]
vi[1]
vi[2]
vi[3]
================
아래처럼 숫자를 자동증가시키는 치환법이 있을까요??
그럼 더운 주말에 수고하세요~
읽어주셔셔 감사합니다.
Forums:
http://www.phpschool.com/gnub
http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=40650
익숙하신 언어로 하나 만드시면 됩니다.
emerge money
http://wiki.kldp.org/wiki.php/GentooInstallSimple - 명령어도 몇개 안되요~
https://xenosi.de/
아래와 같이 함수를
아래와 같이 함수를 정의한 다음에요,
아래와 갈이 호출해 주심 됩니다.
vim plugin이 있습니다.
vim에 increment 라는 이름의 plugin이 있습니다.
http://www.vim.org/scripts/script.php?script_id=1199
저같으면 이렇게 하겠습니다.
일단 0자리에 커서를 놓은 다음
qqvyjpX<c-a>q@q@@@@5@@
<c-a>는 control-a입니다.
물론 자리수가 두개 이상으로 늘어난다든지 하면 좀 더 정교하게 매크로를 만들어야 됩니다만, 그건 그 때 가서 다시 생각해봐야죠 ;;
답변주신 송효진님,
답변주신 송효진님, 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 해줄수도 있을까요 --;
좋은하루되시고 건강하세요~~~~~~~
조금더 유용한.
조금더 유용한. 그렇지만 복잡한 script를 원하시면 visincr.vim를 검색해서 사용하셔도 될 것 같습니다.
http://www.vim.org/scripts/script.php?script_id=670
댓글 달기