blueecho의 생각바구니 | vi를 이용한 개발 관련 팁 과 색인을 이용한 방법 blueecho의 생각바구니

blueecho의 생각바구니

누군가에게 "당신은 무엇을 잘하십니까?"라는 질문을 들었을때 바로 대답할것을 만들어보자~!!
  104342      17
전체 (480)
NeWs (19)
배움생활 (87)
취미생활 (116)
끄적끄적 (240)
인생설계 (14)
Wish list (4)
연구실생활 리눅스 자전거 지름신 사진 연애 생일 일본소설 솔카당 연구실 생활 사랑 영화감상 Fedora 노키아 선물 카메라 장비 홈페이지 친구 츠지 히토나리 유머 이별 초속 5cm verilog 논문 개발 HDL 학교 출사 솔로
«   2010/09   »
      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    

 

  vi를 이용한 개발 관련 팁 과 색인을 이용한 방법 | 2009/03/25 21:53 | 배움생활/리눅스   
2009/03/25 21:53 2009/03/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 등 유닉스, 리눅스 개발 환경에서 자주 사용하게 되는 필수 유틸리티의 활용법을 알려준다. 많은 그림과 도식, 구체적인 예제들을 통해 기능과 원리를 설명하고 있어 초중급 개발자도 쉽게 익힐 수 있다.



트랙백 위치 :: http://blueechos.net/trackback/406
hyperdash 2009/03/29 23:58
유닉스 계열은 vi 의 인프라를 뒤집을 app가 아직도 없는 거냐?
     
  
비밀댓글
#1 ... #88 #89 #90 #91 #92 #93 #94 #95 #96 ... #480
 
     
- Home
- Guestbook
- Manage - Location
- Tag - Post


 
음... 원래는 잘 몰랐어...
07/23 - blueecho
MPSoC 관심이 많으시나...
07/21 - etguny
음.... 이제 보기 시작...
07/14 - blueecho
프로그래머가 몰랐던 멀...
07/12 - soyoja
자알 잘랐다~~~~ 이뿌구...
07/03 - hyperdash
윽... 저렇게 합성하니...
07/03 - hyperdash
어흑.. .내 자전거도 펑...
07/03 - hyperdash
헉... 저 모니터는........
07/03 - hyperdash
아흑.. 서글픈 글이로구...
07/03 - hyperdash
한자는 나오는데 일본어...
06/12 - blueecho
 
모바일 기기로 블로깅하...
登高自卑
프로그래머의 의욕을 꺽...
하늘걸음
프로그래머의 의욕을 꺾...
觀鷄者의 망상 공간
 
Processor Architect.... egoist
TCL관련 tcl/tk 커뮤니티
지극히 개인적인 SoC 이야기
친절한 임베디드 시스템 개발...
한글텍 사용자 그룹 :: Korea...
Hyperdash's Story
J.U.S.I.L.V.E.R
Soyoja Blog
마고자와 함께
잡다한 이야기