blueecho's collection

누군가에게 "당신은 무엇을 잘하십니까?"라는 질문을 들었을때 바로 대답할것을 만들어보자~!!
        
분류 전체보기 (267)
NeWs (21)
배움생활 (107)
취미생활 (118)
끄적끄적 (5)
인생설계 (12)
Wish list (4)
리눅스 일본소설 자전거 영화감상 연구실생활 지름신 사진 Fedora 연구실 생활 솔카당
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
블로그 이동하였습니다.

 

ctags에 해당하는 글 1개
2009.03.25   vi를 이용한 개발 관련 팁 과 색인을 이용한 방법 1

  vi를 이용한 개발 관련 팁 과 색인을 이용한 방법 | 2009. 3. 25. 21:53 | 배움생활/리눅스   
요즘들어서 vi를 이용한 편집을 사용하긴 하지만 무식한 방법을 이용한 검색을 하거나, kdevelop같은 IDE툴을 사용할 때가 많다.
오늘 책에서 본 내용은 ctags와 cscope를 이용한 검색 방법에 대해서 읽었다.

1. 특정 문자열을 가진 파일을 검색하는 방법

command> find . -name (filename) -exec grep -Hn (strings) {} \;


현재 폴더 내에서 특정 filename의 파일들 중에서 strings를 포함하고 있는 파일(심볼릭링크 제외 : -H)과 행번호(-n)를 출력한다.

command> grep -RIwHn (strings) *


-R : recursive, -I : skip binary file, -w : whole word
요런 방식으로도 출력은 가능하다.

2. ctags를 이용한 검색 방법

command> ctags -R


색인을 만들어준다. -R 옵션은 역시 하부 디렉토리 모두 검색한다는 뜻(재귀적)

command> vi -t (strings)


vi의 tag옵션으로 해당 문자열을 가진 열을 찾아서 열어준다.  또는 vi의 명령행 모드에서 다음과 같이 입력한다.

:tag (strings)


또 다른 방법으로는 찾는 문자가 있는 행에서 ctrl+]키를 눌러서 이동이 가능 돌아올때는 ctrl+T이다. 이 명령은 중첩(nested)되어서 사용가능하다.

tj명령을 이용하여서 리스트로 나열된 부분에서 찾을 수 있다. 또한, sta명령을 사용하면 수평창분할을 하여서 보여주기도 한다. ptn의 경우는 다음 태그로 ptp의 경우는 이전 태그로 점프한다.

:tj (strings)
:sts (strings)
:ptn
:ptp

3. scope를 이용한 검색

command> cscope -R


키 용법이 일반적인 것과는 다르니 확인할 것 ?명령으로 확인해야 한다.

command> find . \(-name '*.c' -o -name '*.cpp' ....... -o -name '*.S' \) -print > cscope.files
command> cscope -i cscope.files


원하는 파일들에서 색인을 만들수 있도록 만들어준다. 요 명령의 경우는 쉘스크립트로 만들어서 사용하는 것이 편하다.

vi에서 cscope를 사용하려면 다음과 같은 내용을 vi의 환경설정파일에 첨가해 주어야 한다.

[ ~/.vimrc ]
set  csprg = /usr/bin/cscope
set csto = 0
set cst
set nocsverb

if filereadable("./cscope.out")
    cs add cscope.out
else
    cs add (cscope.out의 주소)
endif
set csverb


이후로는 vi의 cs명령을 사용하여서 검색이 가능하다.

:cs find (질의종류) (심볼)

4. vi팁

1) 파일 탐색기능 활용하여 현재 디렉토리 내에 파일 검색을 하도록 해줌. 단, exploer 플러그인이 설치되어야 함

:20vs ./


위의 예의 경우는 20라인짜리 수직선을 나누고 현재 디렉토리를 검색

2) 괄호탐색의 경우는 { 또는 }에 커서를 놓고 %키를 누르면 쌍이 되는 부분으로 이동

3) 함수를 접기 위해서는 { 문자에 커서를 놓고 v]}zf 명령을 눌러주면 함수가 폴딩된다. v]}는 블록을 형성하고 zf를 누르면 폴딩이 된다. 폴딩을 해제 할 경우는 -> 키를 누르거나 zo명령으로 폴딩을 해제해 준다.
쉽게 하기 위해서 환경파일에 다음과 같이 정의해 주면 편하다.

map <F1> v]}zf


4) 여러행에 탭을 넣을 때는 v 를 이용하거나 V를 이용해서 정리하거나 (수정할 행수)>> 명령 또는 <<를  통해서 조정이 가능하다.

7>>


위의 경우는 아래 7행을 탭하나 만큼 옮겨준다.

5) 복사로인해서 흐트러진 소스의 경우 v를 이용하여 블록을 잡아주고 =키를 눌러주면 정렬된다.

6) 파일을 바로 읽어오기 위해서는 파일명이 있는 위치에 커서를 놓고 ctrl+wf를 누르면 수평분할창에 파일이 열린다. 헤더파일 같은 경우 편하다.

7) 자동완성기능 ctrl+p (앞쪽에서 찾음) ctrl+n (뒤쪽에서 찾음)

  열씨미와 게을러의 리눅스 개발 노하우 탐험기 - Blog2Book 시리즈 02  박재호 지음
'열씨미'와 '게을러'라는 가상인물의 대화를 통해 리눅스로 개발하면서 겪는 개발현장 사례를 14개의 짧은 이야기를 통해 실감나게 그려낸다. 각 이야기는 리눅스 신참인 '열씨미'와 리눅스 해커인 '게을러'의 해결방안을 동시에 수록하고 있어 다 나은 해결방안을 모색할 수 있는 계기를 마련해준다.
  유닉스.리눅스 프로그래밍 필수 유틸리티 - vi, make, gcc, gdb, cvs, rpm  백창우 지음
vi, make, gcc, gdb, cvs, rpm 등 유닉스, 리눅스 개발 환경에서 자주 사용하게 되는 필수 유틸리티의 활용법을 알려준다. 많은 그림과 도식, 구체적인 예제들을 통해 기능과 원리를 설명하고 있어 초중급 개발자도 쉽게 익힐 수 있다.



#1
 
     
- Home
- Guestbook
- Manage - Location
- Tag - Post