리눅스

리눅스/vi(vim)을 Source Insight 처럼 사용하기

우진샘 2010. 7. 1. 13:48

출처 : http://cafe985.daum.net/_c21_/bbs_search_read?grpid=ZmCn&fldid=FIHH&contentval=00025zzzzzzzzzzzzzzzzzzzzzzzzz&nenc=&fenc=&q=gstreamer&nil_profile=cafetop&nil_menu=sch_updw

vi(vim)
source insight 처럼 사용하기

 

준비물

vim 6.1 이상 (fedora core 에 있는 vim 그대로 사용해도 무방)

ctags (/usr/bin/ctags) (fedora core5 에 있는 것 그대로 사용해도 무방)

cscope (/usr/bin/csope) (fedora core5 에 있는 것 그대로 사용해도 무방)

taglist (vim 플러그인입니다. http://vim-taglist.sourceforge.net/)

 

1. ctags 설정

ansi c header 파일에 대한 tag를 인덱싱해 두기 위해

$ cd /usr/include

$ ctags -R

조금 걸릴수 있으니 기다립니다.

사용하실 소스코드가 있는 디렉토리로 이동합니다.

$ cd /home/share/omap-linux

$ ctags -R

한참 기다립니다.

 

이제 vim에서 tag 를 사용할 수 있게 vim의 설정을 수정해 줍니다.

시스템의 모든 유저들이 동일한 tag 설정을 사용할수 있게 하기 위해서는

/etc/vimrc 파일에 아래 설정을 추가하시고

root 나 특정 유저만 해당 설정을 사용하고 싶으신 경우

$ cd ~

후에 유저 자신의 홈디렉토리의 .vimrc 파일을 수정합니다.

아래는 ctags 를 사용하기 위해 추가해주실 설정입니다.

set tags=./tags,/usr/include/tags,/home/share/omap-linux/tags (이런식으로 소스코드 디렉토리가 추가 될때마다 태그 위치를 추가해주시면 됩니다.)

사용법은 vi 에서 소스코드를 편집/분석하다가

원하는 심볼 위에 커서를 두고

ctrl + ]

해주시면 됩니다.

심볼을 따라서 분석하시다가 다시 처음으로 돌아갈때는

ctrl + t

를 눌러주세요

 

2. cscope 설정 (root 권한으로 작업하세요)

/usr/bin/cscope 가 있는지 확인하시고

$ cd /usr/bin

$ vi mkcscope (원하시는 스크립트명으로 파일생성)

하신 후에 아래 내용을 스크립트 파일에 입력해줍니다.

#!/bin/sh

rm -rf cscope.files cscope.files

find . \( -name '*.c' -o -name '*.cpp' -o -name '*.cc' -o -name '*.h' -o -name '*.s' -o -name '*.S' \) -print > cscope.files

cscope -i cscope.files


위와 같이 스크립트 파일을 작성 후에

$ chmod 755 /usr/bin

해줍니다.

이제 사용하실 소스코드가 있는 디렉토리로 이동합니다.

$ cd /home/share/omap-linux

$ mkcscope

스크립트 파일을 실행하면 상단에 상태 진행바가 천천히 진행됩니다.

바가 끝까지 진행하고나면

Find this C symbol:

Find this global definition:

Find functions called by this function:

 

등등등.....에서 커서가 깜빡이며 대기합니다.

ctrl+d 를 누르시고 빠져나옵니다.

 

이제 vim 에서 cscope 를 사용할 수 있게 설정합니다

아까와 마찬가지로 /etc/vimrc 혹은 사용자 디렉토리의 .vimrc 파일에 추가합니다.

set csprg=/usr/bin/cscope

set csto=0

set cst

set nocsverb

 

if filereadable("./cscope.out")

   cs add cscope.out

else

   cs add /home/share/omap-linux/cscope.out

endif

set csverb

사용법은 vi 실행후

command mode 에서 (: 를 누르고)

: cs find s 심볼이름

위와 같이 사용하시면 됩니다.

cs 사용 법은 command mode 에서

:cs 엔터

해주시면 간단한 사용법을 알 수 있습니다.

 

3. vim 에서 마우스 사용하기

키보드만 이용해서 소스 수정하기 다소 불편한 면이 있습니다.

vim 에서는 마우스를 지원합니다.

아까와 같이 /etc/vimrc 혹은 ~/.vimrc 를 수정합니다.

set mouse=a

한줄만 추가해주시고 vim 을 다시 실행하시면 마우스 동작을 인식합니다.

(원하는 곳에 커서를 옮긴다던지 소스코드 스크롤을 한다던지 혹은 ctags 와 연동하여 심볼 탐색을 하는등)

 

4. vim 에서 심볼 목록 한눈에(?) 보기

소스인사이트 처럼 옆에 taglist 가 나오길 원하시는 분들을 위해

vim 에서 사용가능한 플러그인이 taglist 입니다.

사용자의 홈디렉토리로 이동합니다.

$ cd ~

$ mkdir .vim

 그리고 받아온 taglist44.zip 파일을 .vim 에 옮깁니다.

그리고 압축을 풉니다.

$ unzip taglist44.zip

그럼 .vim 디렉토리 밑에 doc plugin 디렉토리가 생깁니다.

설치가 완료 되었습니다.

vim 을 실행하시고

소스코드를 연 상태에서 command mode 에서

: Tlist

라고 입력해줍니다.