본문 바로가기

리눅스/기타

[리눅스] vim - ctags 단축키 / 플러그인

* 테마

colorscheme torte,


*cscope 

http://www.placeo.pe.kr/index.php?document_srl=1561&mid=DevelopmentLinux&listStyle=webzine

* cscope, ctags 수동설정

 - cs add cscope.out

 - set tags

 - 

mkcscope.sh


mkctags.sh


* vi 단축키

종합참고자료: http://blog.outsider.ne.kr/540

ctrl + ]  함수로이동

ctrl + t   이전 이동

ctrl +h,j,k,l  창이동

      +wn 수평창

      +wv 수직창

      +wq 현재창 종료

      +wo 현제창 제외 모두 종료

      +w= 동일크기

[i 함수원형

gd 지역변수 선언 위치

v 블럭지정 후 = 소스정렬

set nw 행 번호

TlistToggle 지역변수 및 함수 리스트 창 생성

{} 괄호에서 % 를 누르면 쌍으로 이루는 곳으로 이동


검색어 강조 기능 on

:set hls 또는 :set hlsearch


검색어 강조 기능 off

:nohls 또는 :nohlsearch


set nocompatible " 오리지날 VI와 호환하지 않음
set autoindent  " 자동 들여쓰기
set cindent " C 프로그래밍용 자동 들여쓰기
set smartindent " 스마트한 들여쓰기
set wrap 
set nowrapscan " 검색할 때 문서의 끝에서 처음으로 안돌아감
set nobackup " 백업 파일을 안만듬
set visualbell " 키를 잘못눌렀을 때 화면 프레시
set ruler " 화면 우측 하단에 현재 커서의 위치(줄,칸) 표시
set shiftwidth=4 " 자동 들여쓰기 4칸
set number " 행번호 표시, set nu 도 가능
set fencs=ucs-bom,utf-8,euc-kr.latin1 " 한글 파일은 euc-kr로, 유니코드는 유니코드로
set fileencoding=utf-8 " 파일저장인코딩 
set tenc=utf-8      " 터미널 인코딩
set expandtab " 탭대신 스페이스
set hlsearch " 검색어 강조, set hls 도 가능
set ignorecase " 검색시 대소문자 무시, set ic 도 가능
set tabstop=4 "  탭을 4칸으로
set lbr
set incsearch "  키워드 입력시 점진적 검색
syntax on "  구문강조 사용
filetype indent on "  파일 종류에 따른 구문강조
set background=dark " 하이라이팅 lihgt / dark
colorscheme desert  "  vi 색상 테마 설정
set backspace=eol,start,indent "  줄의 끝, 시작, 들여쓰기에서 백스페이스시 이전줄로
set history=1000 "  vi 편집기록 기억갯수 .viminfo에 기록


* 한글깨짐 설정

se enc=korea

se enc=utf8


*Tlist 설치

~/.vim을 생성 후 압축을 푼다

  

*cscope 검색유형

- 0 (s) : C 심볼을 검색

- 1 (g) : 정의

- 2 (d) : 이 함수에 의해 호출되는 함수 검색

- 3 (c) : 이 함수를 호출하는 함수 검색

- 4 (t) : 텍스트 문자열 검색

- 5 (e) : 확장 정규식 사용해서 검색

- 7(f) : 파일 이름 검색

- 8(i) : 이 파일을 include 하는 파일 검색


* omnifunc is not set  에러시 

.vimrc에

filetype plugin indent on

을 넣으면 자동으로 인덴트기능 + 타입에 맞게 완성기능이 동작합니다.
파일타입에 따른 자동인덴트 기능을 사용하고 싶지 않으시면,
/usr/local/share/vim/vim70/autoload에 있는 complete plugin을 보고
수동설정하시면 됩니다.

set omnifunc=ccomplete#Complete "C의 경우
set omnifunc=htmlcomplete#Complete "Html의 경우

그리고 ctags로 tag를 미리 만들어 놔야 태그 되어진 태그 인덱스도
완성목록에 뜰겁니다.

단축키는 입력상태에서 ^x^o 
이전 버젼에도 지원했던 ^n^p도 또 메뉴리스트로 뜨더군요.


Vim 7.0을 쓰신다면 Intelligent completion 기능을 쓸 수 있습니다.
단, 이 기능을 사용하려면 ctags가 있어야 합니다.

1. 헤더 파일이 있는 디렉토리로 가서(/usr/include 등) $ ctags -R로 tags 파일을 생성합니다.

2. ~/.vimrc 파일에 다음을 추가합니다.
filetype plugin on 
set tags+=/usr/include/tags

3. vim을 실행해 파일을 작성합니다. 입력 도중 Ctrl+X, Ctrl+O를 연속해서 누르면 이 기능이 동작합니다. 
타입 이름을 쓰는 중에 작동시키면 지금까지 작성한 문자들로 시작하는 타입들을 리스팅해줍니다.
또, 구조체 변수 뒤에 .또는 ->를 쓴 후 Ctrl+X, Ctrl+O를 누르면 그 구조체의 멤버를 리스팅해줍니다.

C, HTML, Ruby, Python, PHP 등이 기본 지원되고, C++는 OmniCppComplete 플러그인(http://vim.sourceforge.net/scripts/script.php?script_id=1520)을 설치하면 사용할 수 있습니다.