본문 바로가기

Linux

VIM 펑션키 맵핑

이 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 하셔도 됩니다.

'Linux' 카테고리의 다른 글

우분투에 아파치 + 톰캣 연동하기  (0) 2011.05.27
synergy linux build  (0) 2011.05.25
SSL서비스 구축 및 OpenSSL  (0) 2011.04.14
VI 사용 간략 정리  (0) 2011.04.12
objdump  (0) 2011.02.16