커맨드창에서 두개의 파일을 비교 하는 방법은

vimdiff a.c b.c

이렇게 바로 실행 할 수도 있고, 아래와 같이 실행 할 수도 있따.(수평 분할)

vim a.c
:diffs b.c   (:diffsplit b.c)

수직 분할하려 비교 하려면 아래와 같이 명령어를 사용하면 된다.
vim a.c
:vert diffs b.c   (:vertical diffsplit b.c)

이미 열러 있는 두개의 파일을 비교 할때는 아래 처럼 하면 된다.
vim a.c
:sp b.c
:diffthis 

실제로 vim은 실행시 몇 가지 모드 중 하나로 동작 하는 것이다. 즉, 실행시 readonly, vi compatible, diff mode등으로 전환 된다.


이제 부터는 비교하고 있는 파일의 내용을 편집하는 것을 알아 보도록 하자.
비교하는 파일의 편집이란, 한쪽의 내용을 다른쪽으로 copy하는 것이다.
:diffget
:diffset

위의 명령어는 현재 커서가 위치한 반대편의 내용으로 부터 가져오거나 보내는 것이다.
by danguria 2011. 5. 31. 20:09
1.  cscope설치 하기

여기서 scsope 실행 파일을 다운로드 받고 압축을 풀면 sort.exe cscope.exe 두개의 실행 파일이 나온다.
이 파일을 콘솔에서 실행하기 쉽게 하기 위해 환경변수에 path를 설정해 놓는다. 나의 경우에는 gvim.exe가 있는 곳에 두 파일을 옮기고 환경변수 설정을 하였다.



2. findutils 다운로드

cscope는 내부적으로 find 명령어를 이용한다. find명령어는 리눅스 명령어인데 윈도우즈에서 사용할 수 있는 프로그램이 있다. 이 findutils라는 프로그램을 다운로드 받아 설치하도록 하자.


3. scope DB정보 구축하기

cscope를 사용하기 전에 소스파일로 부터 DB정보를 구축해야 한다.
소스파일이 있는 디렉토리에서 가장 루트 디렉토리에서 아래 명령어를 실행한다.
$ cscope -b -R

결과로 "cscope.out" 이라는 파일이 생성된다.
그러나 이 결과는 C, Cpp파일만 분석하기 때문에 다른 소스 파일을 분석할때 cscope를 사용할 수 없다.
다른 파일을 사용하기 위해서 find명령어를 이용해 DB로 구축하고자 하는 파일을 찾아서 cscope.files라는 파일에 저장해야 한다. 아래의 명령어를 통해 cscope.files 를 만들자.
$ find . W( -name '*.c" -o name '*.cpp' -o -name '*.cc' -o -name '*.java' \) -print > cscope.files

명령어 안에 분석하고자 하는 소스파일의 종류를 모두 기술하면 된다.

4. vim에 DB정보 등록하여 사용하기

아래의 명령을 .vimrc에 넣거나 필요할때 마다 vim명령으로 지정하면 된다.
cs add /cscope.out이 있는 경로/cscope.out

5. cscope 명령어


[cscope 명령어]

Add     :          새 데이터 베이스 더하기        (사용법:           add file | dir [pre-path] [flags]

Find     :          Query for a pattern

                     c: 이 함수를 부르는 함수들 찾기

                     d:  이 함수에 의해 불려지는 함수들 찾기

                     d: egrep 패턴 찾기

                     f: 이 파일 찾기

                     g: 이 정의 찾기

                     i: 이 파일을 포함하는 파일들 찾기

                     s: C 심볼 찾기

                     t: Find assignments to

help     :          이 메지시 보이기        (사용법 : help)

kill       :          연결 끊기                  (사용법 : kill #)

reset    :          모든 연결 다시 초기화 (사용법 : reset)

show   :          연결 보여주기            (사용법 : show)


by danguria 2011. 5. 17. 14:12
1. ctags란?

ctag는 소스 파일을 태그라는 단위로 잘라서 태그정보를 토대로 소스 분석을 도와주는 유틸리티입니다.
윈도우즈 운영체제에서 많이 사용하는 IDE Tool 인 Visual studio에서는 기본적으로 제공하는 기능입니다. 리눅스 진영에서는 작은 기능을 하는 프로그램을 조합해서 쓰는 것을 좋아 하기 때문에 편집기에 ctags를 조합해서 사용합니다.

2. ctag설치

리눅스(우분투)에서 ctag를 설치 하기 위해서는 터미널에서 아래의 명령을 입력하면 됩니다.
$ sudo apt-get install ctags

3. tags 파일 만들기

ctag를 사용하기 위해서는 소스를 분석하고자 파일들에 대해서 tag정보를 추출해야 합니다.
아래의 코드를 사용하여 tag정보를 추출합니다.

(분석하고자 하는 소스파일이 있는 디렉도리의 최상위 디렉토리에서 실행) 
$ ctags -R

4. vim에 ctags 설정 정보 추가 하기

vim편집기에서 ctags정보를 이용하여 소스분석을 쉽게 할 수 있습니다.
아래의 설정정보를 .vimrc파일에 추가해 줍니다.
여러개의 tags파일 정보를 추가 하기 위해는 ','로 구분 합니다.

set tags=./tags, /usr/src/linu/tags


5. ctags 사용하기

4번 단계까지 설정이 끝났다면 vim에서 ctags를 이용할 수 있습니다. 아래는 ctags명령어를 정리해놓은 자료 입니다.

:ta [tag]   or   Ctrl + ]

[tag] 정의된 위치를 나열하고 선택한 위치로 점프. 현재 위치는 stack push 된다.

 :ta [tag]   or   tj [tag]

 :po   or   Ctrl + t

stack top에 저장된 위치를 pop하고 그 위치로 점프

 :sts [tag]

[tag]가 정의된 위치를 나열하고 선택한 위치로 창을 수평 분할하여 새로 생성된 창에 표시

 :stj [tag]

 :tn

 tj ts로 점프했을 때 다음 tag로 점프

 :tp

 tj ts로 점프했을 때 이전 tag로 점프

 :tr

 tj ts로 점프했을 때 처음 tag로 점프

 :tl

 tj ts로 점프했을 때 마지막 tag로 점프 

 :pts [tag]

 [tag]가 정의된 위치를 나열하고 선택한 위치로 창을 수평 분할하여 새로 생성된 창에 표시하지만 커서는 현재 위치에 유지

 :ptj [tag]

 미리보기 윈도우에 tag가 정의된 형식을 보임

 :ptn

 ptj pts로 점프했을 때 다음 tag로 점프

 :ptp

 ptj pts로 점프했을 때 이전 tag로 점프

 :ptr

 ptj pts로 점프했을 때 처음 tag로 점프

 :ptl

 ptj pts로 점프했을 때 마지막 tag로 점프


by danguria 2011. 5. 17. 13:36
| 1 |