[편집] 개발자를 위한 vi 편집기 사용팁

이 Tip은 VIM 6.0 이상 버젼에서 적용됩니다. VIM 에서 펑션키( F1 ~ F12 )를 적당히 뜯어

고쳤습니다. 아래에서 설명하는 각 문장들을 .vimrc 에 써 넣으면, 다음번 VIM 을 실행시킬

때부터 적용됩니다.

< 일반적인 기능 >

명령: map [F1] K

-> 이 문장은 펑션키 F1 을 shift+k 로 맵핑시켜줍니다. 코딩하다가 ANSI/POSIX 표준함수

의 이름위에 커서를두고 F1 을 누르면 그 함수의 man 페이지를 보여줍니다.

마치 VisualStudio 의 MSDN 과 비슷한 기능이죠.

명령: map [F2] :w![CR]

-> 이 문장은 펑션키 F2 를 “:w!”+ENTER 로 맵핑시켜줍니다.

잘 아시겠지만, 현재 편집중인 파일을 저장하는 기능입니다.

< 소스코드 이쁘게 보기 >

명령: map [F3] v]}zf

-> 이 문장은 펑션키 F3 을 v]}zf 로 맵핑시켜줍니다.

코딩을 하다보면 함수를 정의하는 부분이나 if() 문같은곳에 아래처럼 생긴 코드를

볼 수 있습니다.

1: int function( void )

2: {

… 중간 200라인 생략 …

201: }

이때 커서를 ‘{‘ 위치에 갖다두고 F3 을 누르면 { ~ } 를 통채로 Fold 해서, 한줄로

표시해줍니다. 이렇게 폴드된 문장은 아래와 같이 생겼습니다.

1: int function( void )

201: —- 201 Line folded ———-

명령: map [F4] zo

-> 이 문장은 펑션키 F4 를 zo 에 맵핑시켜줍니다.

위에서 F3 키로 Fold 된 라인에 커서를 두고 F4 를 누르면, 폴드된 내용을 복구시켜줍니다.

< 파일 브라우징 >

명령: map [F5] :25vs ./[CR]:set nunumber[CR]^Ww

명령: map [F6] ^Ww

명령: map [F7] O

-> 이 문장은 아래에 어떤분이 올려주신 팁을 수정해서 만든겁니다.

F5 키를 누르면 화면을 양분해서 프레임을 나눠주고, 왼쪽 프레임에 현 디렉토리의 파일

목록을 보여줍니다. 커서를 좌우프레임으로 왔다갔다 할때에는 F6 을 누릅니다.

왼쪽에 브라우징된 파일 목록에서 어떤 파일을 열고싶을때에는 열고싶은 파일에 커서를

두고 F7 을 누르면 됩니다. F5 와 F6 의 맵핑내용중 ^Ww 라는것은, 차례대로 이렇게 누릅니다.

Ctrl+v, Ctrl+w, w 이렇게 세번을 차례대로 누르면 써집니다.

F7 의 맵핑내용은 shift+o ( O )입니다. 열려진 양쪽 프레임중 하나를 닫고싶을때에는

닫고싶은 프레임에 커서를 두고 :q! 하시면 닫아집니다.

< 소스코드 코딩/분석에 도움되는 기능 >

명령: map [F8] [i

-> 이 문장은 펑션키 F8 을 [i 에 맵핑시켜줍니다. 어떤 함수의 이름에 커서를 두고 F8 을

누르면, 화면 하단에 그 함수의 prototype 을 보여줍니다.

약간은 미흡하게 어긋날때도 있습니다만..^^;

명령: map [F9] gd

명령: map [F10] ”

-> 어떤 함수 안에서 지역변수를 추적해주는 기능입니다. 가령 어떤 함수의 중간에서

var1 이라는 변수가 사용되었는데, 이게 어떤 변수였는지 잘 기억이 안난다면 변수의

이름에 커서를 두고 F9 를 누릅니다. 그러면 var1 변수가 선언된 문장으로 찾아가줍니다.

그리고 var1 변수의 이름을 모두 반전시켜서, var1 이 사용된 곳을 표시해줍니다.

이렇게 보다가 다시 원래의 위치로 되돌아가고 싶을때 F10 을 누르면 됩니다.

F10 의 맵핑내용은 ‘;’ 키의 오른쪽 옆에있는 키를 두번 누른것입니다.

명령: map [F11] ^]

명령: map [F12] ^T

-> 위의 F9, F10 기능은 오직 지역변수만을 추적할 수 있는 기능인데, F11 과 F12 는

전역변수/구조체/정의상수/함수정의를 추적해줍니다.

어떤 사용자정의함수 func() 이 있다고 가정할때, 함수의 이름에 커서를 두고 F11 을

누르면 그 파일이 선언된 문장으로 추적해 찾아가줍니다.

이렇게 추적된 상태에서 또 어떤 구조체의 내용을 보고싶으면 구조체 테그이름에 커서를

두고 F11 을 누르면 됩니다.

이런식으로 함수나 전역변수나 구조체나 #define 으로 정의된 상수를 계속 추적해 들어

갈 수 있습니다. 추적에 들어간 상태에서 이전위치로 되돌아오려면 F12 를 누르면 됩니다.

즉, 원래위치부터 시작해서 F11 을 이용해 10번을 추적해 들어갔다면, 다시 원래위치로

오기위해 F12 를 10번 눌러야 합니다. 맵핑 내용중 ^] 는 Ctrl+v, Ctrl+] 를 차례로 눌러

입력합니다. 마찬가지로 ^T 는 Ctrl+v, Ctrl+t 를 차례로 눌러 입력합니다.

F11, F12 의 추적기능을 이용하기 위해서는 현 디렉토리에 tag 파일이 존재해야만 합니다.

tag 파일은 “어떤 함수가 어느 파일의 몇번째줄에 있다, 어느 구조체가 어느 파일의 몇번째

줄에있다” 하는 정보를 담고있는 파일입니다.

tag 파일을 만드는 방법은 아주 간단합니다. 소스코드가 있는 디렉토리에서 ctags * -R

하셔도 되고, VIM 에서 :!ctags * -R 하셔도 됩니다.

서진우

슈퍼컴퓨팅 전문 기업 클루닉스/ 상무(기술이사)/ 정보시스템감리사/ 시스존 블로그 운영자

You may also like...

2 Responses

  1. meditation music 말해보세요:

    meditation music

  2. bossa nova music 말해보세요:

    bossa nova music

페이스북/트위트/구글 계정으로 댓글 가능합니다.