vi를 이용한 개발 관련 팁 과 색인을 이용한 방법
배움생활/리눅스 |
2009/03/25 21:53
요즘들어서 vi를 이용한 편집을 사용하긴 하지만 무식한 방법을 이용한 검색을 하거나, kdevelop같은 IDE툴을 사용할 때가 많다.
오늘 책에서 본 내용은 ctags와 cscope를 이용한 검색 방법에 대해서 읽었다.
1. 특정 문자열을 가진 파일을 검색하는 방법
현재 폴더 내에서 특정 filename의 파일들 중에서 strings를 포함하고 있는 파일(심볼릭링크 제외 : -H)과 행번호(-n)를 출력한다.
-R : recursive, -I : skip binary file, -w : whole word
요런 방식으로도 출력은 가능하다.
2. ctags를 이용한 검색 방법
색인을 만들어준다. -R 옵션은 역시 하부 디렉토리 모두 검색한다는 뜻(재귀적)
vi의 tag옵션으로 해당 문자열을 가진 열을 찾아서 열어준다. 또는 vi의 명령행 모드에서 다음과 같이 입력한다.
또 다른 방법으로는 찾는 문자가 있는 행에서 ctrl+]키를 눌러서 이동이 가능 돌아올때는 ctrl+T이다. 이 명령은 중첩(nested)되어서 사용가능하다.
tj명령을 이용하여서 리스트로 나열된 부분에서 찾을 수 있다. 또한, sta명령을 사용하면 수평창분할을 하여서 보여주기도 한다. ptn의 경우는 다음 태그로 ptp의 경우는 이전 태그로 점프한다.
3. scope를 이용한 검색
키 용법이 일반적인 것과는 다르니 확인할 것 ?명령으로 확인해야 한다.
원하는 파일들에서 색인을 만들수 있도록 만들어준다. 요 명령의 경우는 쉘스크립트로 만들어서 사용하는 것이 편하다.
vi에서 cscope를 사용하려면 다음과 같은 내용을 vi의 환경설정파일에 첨가해 주어야 한다.
이후로는 vi의 cs명령을 사용하여서 검색이 가능하다.
4. vi팁
오늘 책에서 본 내용은 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
: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
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
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 플러그인이 설치되어야 함
위의 예의 경우는 20라인짜리 수직선을 나누고 현재 디렉토리를 검색
2) 괄호탐색의 경우는 { 또는 }에 커서를 놓고 %키를 누르면 쌍이 되는 부분으로 이동
3) 함수를 접기 위해서는 { 문자에 커서를 놓고 v]}zf 명령을 눌러주면 함수가 폴딩된다. v]}는 블록을 형성하고 zf를 누르면 폴딩이 된다. 폴딩을 해제 할 경우는 -> 키를 누르거나 zo명령으로 폴딩을 해제해 준다.
쉽게 하기 위해서 환경파일에 다음과 같이 정의해 주면 편하다.
4) 여러행에 탭을 넣을 때는 v 를 이용하거나 V를 이용해서 정리하거나 (수정할 행수)>> 명령 또는 <<를 통해서 조정이 가능하다.
위의 경우는 아래 7행을 탭하나 만큼 옮겨준다.
5) 복사로인해서 흐트러진 소스의 경우 v를 이용하여 블록을 잡아주고 =키를 눌러주면 정렬된다.
6) 파일을 바로 읽어오기 위해서는 파일명이 있는 위치에 커서를 놓고 ctrl+wf를 누르면 수평분할창에 파일이 열린다. 헤더파일 같은 경우 편하다.
7) 자동완성기능 ctrl+p (앞쪽에서 찾음) ctrl+n (뒤쪽에서 찾음)
: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 (뒤쪽에서 찾음)
'배움생활 > 리눅스' 카테고리의 다른 글
| CD ISO이미지 만들기.. (0) | 2009/05/08 |
|---|---|
| Fedora에서 make menuconfig가 안될때... (0) | 2009/04/29 |
| vi를 이용한 개발 관련 팁 과 색인을 이용한 방법 (1) | 2009/03/25 |
| VirtualBox USB인식 문제 해결방법 (0) | 2009/03/24 |
| diff 와 patch 사용법 (0) | 2009/03/23 |
| 리눅스에서 윈도우즈 폰트 사용하는 방법 (0) | 2009/03/23 |
