'Vim'에 해당되는 글 2건

  1. 2008.08.06 VIM + CSCOPE + CTAGS in cygwin (3)
  2. 2008.06.02 Cygwin 설치하고 개발환경 구축하기
사용된 버전은 아래와 같다.

vim : 7.1
cscope : 15.6
exuberant Ctags : 5.7 (우리가 흔히 ctags라고 부르는 것이며 오리지널 ctags는 재귀 옵션인 -R이 안먹어서 손수 스크립트를 만들어줘야되는 불편을 수반한다 -_-)

vim이랑 ctags는 cygwin의 setup에서 설치가 되는데 cscope는 패키지에 선택이 안되므로 직접 컴파일해서 설치해야 한다.  물론 이를 위해 cygwin setup의 devel 부분의 웬만한 패키지들은 선택해놓는게 좋을거 같다 (하드가 완전 모자라지 않는 이상).

http://cscope.sourceforge.net/ 에서 최신 cscope를 download 받을 수 있다.  구글링해서 보니 static binary도 돌아다니는데, 내 cygwin 환경에서는 동작하지 않았다 (getline 어쩌고 하는 메세지인데 http://rommance.net/wikix/index.php?display=Cscope 아무래도 요거 적용이 안된거 같다.  어쨌든 static binary는 사용불가.

$ ./configure
$ make && make install

물론 INSTALL에 있는 내용 그대로다 -_-; 요렇게 하면 /usr/local/bin 에 cscope.exe가 생성이 된다.  cscope를 사용하기 위해서는 DB를 만들어야 되는데 맨날 치기 귀찮으니까 mkcscope.sh라는 스크립트를 만들어 놓자.

>> 2008년 6월 2일에 추가된 내용.  mkcscope.sh를 만드는 find에서 찾는 경로 지정을 . 으로 하면 상대경로로 찾아지므로 나중에 좀 불편해진다.  따라서 이걸 $PWD 로 바꾸면 절대경로로 바뀐다.  (env 해보면 알겠지만 PWD는 기본 환경 변수로 현재의 경로를 나타냄)

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

cscope -o cscope.files
cscope -i cscope.files


위의 스크립트는 거의 표준처럼 쓰는 것 같다.  당연히 *.c *.cpp *.cc *.h *.s *.S를 대상으로 리다이렉션을 해서 목록을 만들고 요놈을 DB로 만들게 된다.

요거 끝났으면 실행권한 부여해서 (chmod +x mkcscope.sh) /bin에 복사해놓고 DB를 만든다. 

$ mkcscope.sh


하면 최상단의 바(-_-;)가 진행이 되고, 다 되면 Ctrl+D를 눌러 빠져나온다.  그럼 해당 디렉토리에 cscope.out이 생성된 것을 볼 수 있다.

이거 됐으면 vim이랑 연결시키는 부분을 처리해주어야 한다.  vim에는 이미 cscope에 대한 명령이 내장되어 있으니 몇개만 연결시켜주면 된다.  cygwin에 vim 설정이 아직 안된 상태라면 http://kangun.tistory.com/29 을 참고해서 기본 설정을 한뒤... .vimrc에 다음 내용을 추가한다.

set csprg=/usr/local/bin/cscope.exe
set csto=0
set cst
set nocsverb
cs add 절대경로/cscope.out


이렇게 하고 나서 vim을 띄우고 나서...

:cs find [query type] [symbol]


의 방식을 사용하면 원하는 symbol을 쉽게 찾을 수 있으며, query type은 아래와 같다.

0 or s : Find this C symbol
1 or g : Find this definition
2 or d : Find functions called by this function
3 or c : Find functions calling this function
4 or t : Find assignments to
6 or e : Find this egrep pattern
7 or f : Find this file
8 or i : Find files #including this file

뭐 ctags야... ctags -R해서 tags를 만들고 vimrc에 다음과 같이 설정해주면 된다.

set tags=/절대경로/ctags


이렇게 하고 Ctrl+]. Ctrl+T의 조합등으로 간단한 탐색이 가능해지며, ctags의 부가적인 기능들은 :help ctags 로 확인이 가능하다.
Posted by 강군님

댓글을 달아 주세요

  1. Favicon of https://happyoutlet.tistory.com 붕탱구 2009.01.05 09:44 신고  댓글주소  수정/삭제  댓글쓰기

    좋은글 잘보고 갑니다!!

  2. 양재모 2009.04.04 00:00  댓글주소  수정/삭제  댓글쓰기

    좋은글 감사합니다.
    쪽집게 처럼 필요한 내용만 딱딱있네요 ㅋ~

회사에서 사용하는 개발환경은 linux가 아니다... 안타깝다 -_-

어쨌든 회사에서의 개발환경은 cygwin + gcc + gmake이다.  따라서 cygwin을 설치한다.

http://www.cygwin.com/setup.exe 를 다운받아놓도록 한다.  향후 패키지를 추가/제거할 때도 사용하여야 하니까 그냥 다운 받아놓는 것이 낫다.  용량도 400KB 정도...

이걸 실행시키면 어디를 통해서 install 할 것인지를 물어본다.  여기에서 Install from Internet을 사용한다.

Root Directory는 기본 설정인 C:\cygwin을 그냥 사용하는 것이 제일 무방할 듯 싶다.  검색해본 결과 많은 사람들이 여기에 기반을 두고 작업을 하였기 때문에 헷갈리지 않을터이다.  밑의 설정은 All Users와 Unix/binary에 체크한다.

여기서 다음을 누르면 어디에 다운을 받을 것인지, 어떤 방법으로 받을 것인지 물어보는데 기본값을 쓰면 되고, download site는 http://ftp.daum.net을 추가해서 쓰면 괜찮을 듯 하다.

본격적으로 패키지를 선택해야 하는 부분이 나오는데 직감적으로 gcc나 make, gdb, vim 등등은 당연히 해야할 것이라는 느낌이 온다.  기본값은 진짜 기본만 설치하게 되므로 나중에 되는게 하나도 없다 -_-; 고로, 필요한거 두루 선택해주고, (Skip이라고 쓰여진 부분을 클릭) 다음으로 진행하면 인터넷에서 쭉쭉 받아와 설치하게 된다.  다음은 필요하다고 생각되는 package들을 정리한 것이다.

Admin - cygrunsrv (sshd 등을 bg로 돌릴 유틸)
Devel - gcc, make, ctags 관련
Editors - vim 관련
Net - openssh 관련 (ssh를 사용할 것이라면)
Shell - rxvt 관련 (xterm을 사용할 것이라면)

위에서 열거한 package 말고도 필요한 패키지들을 선택하도록 하고, 나중에 또 추가가 되므로 크게 신경 쓸 일은 아닌듯 하다.

어쨌거나 설치가 끝나면 환경변수를 설정하도록 한다.  내 컴퓨터 우클릭하여 '속성'->'고급'->'환경변수'를 선택하여 사용자 변수와 시스템 변수를 추가하도록 한다.

사용자 변수에는 HOME (linux에서의 ~ 를 말함)을 지정하고, LOGNAME (windows 계정과 동일하게)을 새로 만든다.

시스템 변수에는 CYGWIN (ntsec binmode)을 새로 만들고 PATH에 C:\Cygwin\bin을 추가한다 (당연히 항목과 항목 사이는 ;으로 구분한다).

만약 cygwin 자체의 terminal을 쓴다면 상관은 없지만, cygwin의 xterm을 사용하고 싶다면, 추가의 작업이 필요하다.

c:\cygwin을 보면 cygwin.bat가 있다.  autoexec.bat 이후로 bat 파일은 진짜 오랜만이다.  어쨌거나 이거 내용을 보면 다음과 같다.

@echo off

C:
chdir C:\cygwin\bin

bash --login -i

이거를 응용해서 rxvt,bat를 하나 만든다 (xterm용)

@echo off

C:
chdir C:\cygwin\bin

rxvt.exe -tn xterm -rv -sr -sw -bg gray -fg black -sl 1000 -sbt 15 -fn "Dotumche" -e /bin/bash --login -i

rxvt의 각 항목의 값들이 궁금하다면 cygwin에서 rxvt --help를 해보면 알 수 있다.  대충 xterm으로 띄우는데 scrolling이 가능하도록 하고 검은 배경에 회색글씨를 쓰겠다... 폰트는 Dotumche를 쓰겠고.. 뭐 이런 거다.

이게 끝난 다음에 만든 rxvt.bat를 실행시키면 익숙한 shell prompt를 확인할 수 있다.

cygwin에서 개발하려면 다른 editor도 있겠지만, 아무래도 vim을 가장 많이 사용하지 않을까 싶다.  cygwin에서 vim을 사용하려면 이거저거 걸리는게 많다.  일단 기본적으로 설정 파일이 없기 때문에 원 리눅스에서의 컬러풀(?)한 터미널을 기대하면 안된다.  또 한글입력에 문제가 많아서 요거 2가지 처리를 해줘야 한다.

먼저 vim을 설정해야 되는데, 항목이 워낙 많으니 그냥 /usr/share/vim/vim71/vimrc_example.vim을 home 디렉토리에 .vimrc로 복사하고, 좀 손을 봐준다.  쭉 내리다보면 다음과 같은 부분이 있다.

if has("vms")
  set nobackup
else
  set backup
endif

요 부분을 주석처리한다.  vimrc에서의 주석은 " (double quotation mark)를 맨 앞에 붙여주면 된다.  이거 안하면 저장하고 나올때마다 backup 파일이 생기는 짜증나는 (필요하긴 하지만) 현상을 목격하게 된다.  어쨌거나 이거 됐으면 다음 작업을 진행한다.  역시 .vimrc에 다음과 같은 항목을 추가하여 준다.

set fileencoding=euc-kr
set encoding=cp949

vi에서 한글을 사용하기 위한 설정이다.  이렇게 다 됐으면 저장하고 다시 vi로 아무 c파일이나 짜본다.

#include <stdio.h>

int main (void)
{
  printf ("헬로, 시그윈 월드\n");

  return 0;
}

잘 된다.  하지만 이렇게 하면 vim에서만 한글이 잘 보일뿐, 막상 쉘에서 ls해보면 잘 안나온다.  요것도 수정해야 하는데, 홈 디렉토리에 .bash_profile을 다음과 같은 내용을 추가한다.

alias ls='ls -F --color=auto --show-control-char'

쉘에서 ls를 해도 한글이 무리 없이 잘 나오게 된다.  후아... 이정도 했으면 큰 문제 없이 cygwin을 사용할 수 있을 것 같다.  헌데, 작업하다보면 새로운 terminal을 띄워야 할 때가 있는데 이때마다 마우스로 손이 가는건 상당히 부하가 큰 작업(-_-?)이다.  요거를... 키보드에서만 해결하도록 다음과 같은 alias도 하나 추가한다.

alias rxvtTerm='/cygdrive/c/cygwin/bin/rxvt -tn xterm -rv -sr -sw -bg gray -fg black -sl 1000 -sbt 15 -fn "Dotumche" -e /bin/bash --login -i &'

이러면 그냥 쉘 프롬프트에서 rxvtTerm을 실행시켜서 새로운 xterm 하나를 더 얻을 수 있게 된다.
Posted by 강군님
TAG CygWIN, Vim, xterm

댓글을 달아 주세요