2014년 7월 9일 수요일

Windows + gvim + ctags + cscope + taglist


- gvim 명령어
vimrc 파일 링크
https://drive.google.com/file/d/0B8GbcWIV_h-OOC1ndXBZZVRhX2s/edit?usp=sharing


> 커서 이동
 k        커서를 위로 움직임
 j         커서를 아래로 움직임
 h        커서를 왼쪽으로 움직임
 l         커서를 오른쪽으로 움직임
 -        커서를 줄의 처음으로 옮김
 e, E     다음단어의 끝으로, 문자단위 이동
 w, W    다음단어의 처음으로, 문자단위 이동
 $        줄의 마지막으로
 0        줄의 처음으로
 ^        줄의 처음으로(공백이 아닌 처음시작되는 문자)
 Shift+g 문서의 마지막으로 이동한다.
 gg, 1g  문서의 처음으로 이동한다. 1대신 다른 숫자를 입력하면 해당 숫자의 라인으로 이동한다.
 ), (      다음, 이전 문장의 처음으로
 }, {      다음, 이전문단의 처음으로
 ]], [[     다음, 이전 구절의 처음으로
> 화면 스크롤
 ^F      한 화면 을 앞으로 스크롤
 ^B      한 화면 을 뒤로 스크롤
 ^D      반 화면 을 앞으로 스크롤
 ^U      반 화면 을 뒤로 스크롤
 ^E      한줄 앞으로 스크롤
 ^Y      한줄 뒤로 스크롤
 Shift + h         화면의 맨 윗줄로
 Shift + m         화면의 중간줄로
 Shift + l          화면의 맨 아랫줄로
> 입력
 i         현재위치에서 삽입
 I         현재줄의 처음위치에서 삽입
 a        현재위치에서 한칸앞으로 이동해서 삽입
 A        현재줄의 마지막위치에서 삽입
 o        새로운 줄을 커서 아래에 연다
 O       새로운 줄을 커서 위연다
 s        현재 위치의 문자를 지우고 입력모드로 들어간다.
 S        현재위치의 라인을 지우고 입력모드로 들어간다.
> 편집
 y        한줄 복사
 yn       현재 라인에서부터 n라인만큼을 복사
 p        복사된 내용 붙이기
 dd      한줄삭제
 dw      한단어 삭제
 Shift+d, d$       현재커서 위치에서 마지막까지 삭제
 Shift+j  현재 행의 개행문자를 제거한다. 즉 아래라인을 현재라인에 덧붙인다.
> 블록
 v        단어단위로 블럭지정이 가능하다. 블럭범위는 이동명령인 'hjkl' 로 원하는 범위 만큼 지정할수 있다.
 Shift+v 라인단위 블럭지정이다. 라인전체가 선택되며, 위아래 이동명령 'hj' 으로 범위 지정이 가능하다.
 Ctrl+v  블럭단위 블럭지정이다. 4각형의 블럭지정이 가능하며 이동명령인 'hjkl' 로 원하는 범위를 지정할수 있다.
> 파일 처리
 :e [filename]     filename 으로 파일열기
 :q, :q!, :wq       종료, 강제종료, 저장후 종료
 :w, :w [filename] 현재파일명으로 저장, filename 로 저장
 :<범위>w [filename]       지정한 범위만 다른 파일로 저장
 :e [filename]     filename 을 편집하기 위해서 연다
 ZZ      지금파일을 저장하고 vim 을 종료한다.
 :f        현재 작업중인 파일의 이름과, 라인수를 출력한다


- ctags
 압축파일 다운

 환경변수 설정

1. tags 파일을 만들기
우선 소스에서 Makefile 확인하여 tags 타겟이 있는지 확인. 있다면 그걸 활용.
# make tags

없다면, 해당 프로젝트 폴더에서 아래 명령을 batch로 만들거나 직접 실행.
ex) ctags.bat
:: for windows
ctags -R .

2. vim 설정
tags 파일이 있는 경로를 설정합니다.

# vi ~/.vimrc
""""""""""""""""""""""""""""""""""""""""""""""""
" ctags 연결
""""""""""""""""""""""""""""""""""""""""""""""""
"set tags+=D:\tags
set tags+=D:\Source\tags

경로 추가시 반드시 /tags 까지 포함해야 함. 절대경로로 작성.

CTRL+ ] (go) , CTRL+T (back)

3. 명령어
 gvim –t keyword, 또는 :ta keyword
 :ta keyword keyword와 일치하는 태그 위치로 이동
 :ta /keyword keyword가 포함된 태그 검색
 :tj keyword keyword와 일치하는 태그 목록을 출력하고 선택하여 이동 (일치하는 태그가 한개일 경우 바로 이동)
 Ctrl + ] 커서가 위치한 keyword의 정의 부분으로 이동
 Ctrl + t, Ctrl + o 이전 위치로 이동
 :tn 다음 태그로 이동
 :tp 이전 태그로 이동
 :tags 이동한 태그 히스토리 목록 출력

- cscope
1.cscope 생성
cscope.bat
::#!bin/sh
::rm -rf cscope.files cscope.files
::find . \(-name '*.c' -o -name '*.cpp' -o -name '*.cc' -o -name '*.h' -o -name '*.s' -o -name '*.S' -o -name '*.java' \) -print > cscope.files
::cscope -i cscope.files

:: for windows
rm -rf cscope.files cscope.files
dir /B /S *.c *.cpp *h *.s *.S *.java -print > cscope.files
cscope -b -q -k


리눅스에서는 cscope.sh파일을 실행권한을 부여한다음 /usr/bin 에 복사하면 편리하게 사용 할 수 있다.

2. vim 설정
""""""""""""""""""""""""""""""""""""""""""""""""
" cscope 연결
""""""""""""""""""""""""""""""""""""""""""""""""
"source $VIMRUNTIME/plugin/cscope_maps.vim
"cs add D:\cscope.out
cs add D:\Source\cscope.out


3. 명령어
:cs find [질의방법][심볼이름]
ex) :cs find s task_struct


질의종류
0 or s - > Find this C symbol
1 or g - > Find this definition
2 or d - > Find functions called by this function
3 or c - > Find functions calling this function
4 or t - > Find assignments to
6 or e - > Find this egrep pattern
7 or f - > Find this File
-TagList
1. 설치
태그리스트는 vim 플러그인으로 현재 작업 파일의 심볼을 나열하는 기능.
http://vim-taglist.sourceforge.net/
plugin 폴더에 저장.
2. 명령어
:Tlist 실행
창 전환 ctrl+ww















[gVim plugin 설정]
https://www.facebook.com/vim.kr/posts/1421915028024646:0
위 내용 참고하면 됨.
단, 아래 설정시 Windows 에 administaror 계정만 있는 경우 아래 예시처럼 변경 필요.
적당한 위치에 git 으로 받을 폴더 위치 생성.
> git clone https://github.com/gmarik/vundle.git .vim/bundle/vundle.vim
_vimrc 에도 동일한 경로로 지정.
set rtp+=C:\.vim\bundle\vundle.vim

_vimrc 참고
set rtp+=C:\.vim\bundle\vundle.vim

call vundle#begin()
"let Vundle manage Vundle, required
Plugin 'VundleVim/Vundle.vim'

"추가하고 싶은 플러그인을 아래에 나열
Plugin 'bling/vim-airline'
Plugin 'vim-airline/vim-airline-themes'
Plugin 'altercation/vim-colors-solarized'

Bundle 'tpope/vim-fugitive'
Bundle 'Lokaltog/vim-easymotion'
Bundle 'rstacruz/sparkup', {'rtp': 'vim/'}
Bundle 'tpope/vim-rails.git'
Plugin 'scrooloose/nerdtree'
Plugin 'airblade/vim-gitgutter'
Plugin 'scrooloose/syntastic'
Plugin 'ctrlpvim/ctrlp.vim'
Plugin 'nanotech/jellybeans.vim'
Plugin 'kchmck/vim-coffee-script'
call vundle#end()

"plugin 설치 이후
color jellybeans
syntax enable "문법 강조
set wmnu "
set nu "라인 표시
set noswapfile "백업 파일 취소

if has("gui_running") "gvim만 적용
    set guifont=D2Coding:h12
    set background=dark
    colorscheme solarized
    set guioptions-=m "메뉴 삭제
    set guioptions-=T "툴바 삭제
    set guioptions-=r "스크롤 삭제
endif

댓글 없음:

댓글 쓰기

Android Jetpack viewpager2

  Android Jetpack ViewPager2 기본 개념 및 샘플 코드 오늘은 안드로이드 개발에 있어서 굉장히 유용한 컴포넌트 중 하나인 ViewPager2에 대해 이야기해볼까 합니다. ViewPager2는 사용자 인터페이스에서 여러 화면을 좌우...