vim vundle 플러그인 및 환경설정

Posted in 개인/ㄴLinux by

## vim-pathogen ##
Reference: https://github.com/tpope/vim-pathogen

mkdir -p ~/.vim/autoload ~/.vim/bundle; \
curl -Sso ~/.vim/autoload/pathogen.vim \
    https://raw.github.com/tpope/vim-pathogen/master/autoload/pathogen.vim

Add this to your vimrc:

execute pathogen#infect()


## Vundle ##
Reference: http://kldp.org/node/125263
                https://github.com/gmarik/vundle

1. Setup Vundle:

 $ git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle

2. Configure bundles:

    Sample .vimrc:

 set nocompatible               " be iMproved
 filetype off                   " required!

 set rtp+=~/.vim/bundle/vundle/
 call vundle#rc()

 " let Vundle manage Vundle
 " required! 
 Bundle 'gmarik/vundle'

 " My Bundles here:
 "
 " original repos on github
 Bundle 'tpope/vim-fugitive'
 Bundle 'Lokaltog/vim-easymotion'
 Bundle 'rstacruz/sparkup', {'rtp': 'vim/'}
 Bundle 'tpope/vim-rails.git'
 " vim-scripts repos
 Bundle 'L9'
 Bundle 'FuzzyFinder'
 " non github repos
 Bundle 'git://git.wincent.com/command-t.git'
 " git repos on your local machine (ie. when working on your own plugin)
 Bundle 'file:///Users/gmarik/path/to/plugin'
 " ...

 filetype plugin indent on     " required!
 "
 " Brief help
 " :BundleList          - list configured bundles
 " :BundleInstall(!)    - install(update) bundles
 " :BundleSearch(!) foo - search(or refresh cache first) for foo
 " :BundleClean(!)      - confirm(or auto-approve) removal of unused bundles
 "
 " see :h vundle for more details or wiki for FAQ
 " NOTE: comments after Bundle command are not allowed..

Source-Explorer-srcexpl.vim -> SrcExpl 변경
trinity.vim -> Trinity 변경


## ctags 자동검색 ##
Reference: http://kldp.org/node/115739

set tags=./tags;/


## cscope 자동검색 ##
Reference: http://vim.wikia.com/wiki/Autoloading_Cscope_Database

function! LoadCscope()
  let db = findfile("cscope.out", ".;")
  if (!empty(db))
    let path = strpart(db, 0, match(db, "/cscope.out$"))
    set nocscopeverbose " suppress 'duplicate connection' error
    exe "cs add " . db . " " . path
    set cscopeverbose
  endif
endfunction
au BufEnter /* call LoadCscope()


## cscope 명령어 ##
Reference: http://kldp.org/node/115739

:cs find c 함수명 => 함수를 호출하는 곳을 찾을 때
:cs find g 함수명 => 함수가 정의된 곳을 찾을 때
:cs find s 함수명 => 함수명과 일치하는 심볼을 모두 찾아낼 때
:cs find d 함수명 => 지정된 함수가 그 안에서 부르는 함수 찾기
:cs find e 정규표현식 => 정규표현식 패턴으로 찾기
:cs find f 파일명 => 파일 찾기
:cs find i 헤더파일 => 헤더파일 찾기

vim용 키맵 플러그인: http://cscope.sourceforge.net/cscope_maps.vim


## 현재 사용중인 .vimrc ##


"-----------------------------------------------------------------------"
" Vundle 환경설정
"-----------------------------------------------------------------------"
set nocompatible               " be iMproved
filetype off                   " required!

	set rtp+=~/.vim/bundle/vundle/
call vundle#rc()

	" let Vundle manage Vundle
	" required! 
	Bundle 'gmarik/vundle'

	" My Bundles here:
	Bundle 'The-NERD-tree'
	Bundle 'The-NERD-Commenter'
	"Bundle 'Source-Explorer-srcexpl.vim'
	Bundle 'SrcExpl'
	Bundle 'cscope.vim'
	Bundle 'taglist-plus'
	"Bundle 'trinity.vim'
	Bundle 'Trinity'

	" original repos on github
	Bundle 'tpope/vim-fugitive'
	Bundle 'Lokaltog/vim-easymotion'
	Bundle 'rstacruz/sparkup', {'rtp': 'vim/'}
	Bundle 'tpope/vim-rails.git'
	" vim-scripts repos
	Bundle 'L9'
	Bundle 'FuzzyFinder'
	" non github repos
	Bundle 'git://git.wincent.com/command-t.git'
	" ...

	filetype plugin indent on     " required!
	"
	" Brief help
	" :BundleList          - list configured bundles
	" :BundleInstall(!)    - install(update) bundles
	" :BundleSearch(!) foo - search(or refresh cache first) for foo
	" :BundleClean(!)      - confirm(or auto-approve) removal of unused bundles
	"
	" see :h vundle for more details or wiki for FAQ
	" NOTE: comments after Bundle command are not allowed..

"-----------------------------------------------------------------------"
"vim 환경설정
"-----------------------------------------------------------------------"
	scripte utf-8
	" vim:set fenc=utf-8 tw=0:
	" Vim setting for sirini

	" Vim 전용 기능 사용
	set nocp

	" 옵션 복원
	set all&

	" 명령어 기록 갯수
	set hi=100

	" 백스페이스 사용
	set bs=indent,eol,start

	" 인코딩 설정
	"let &tenc=&enc
	"set enc=utf-8
	set fenc=utf-8
	set fencs=utf-8,cp949,cp932,euc-jp,shift-jis,big5,ucs-2le,latin1

	" 커서 위치 항상 보이기
	set ru

	" 완성중인 명령을 표시
	set sc

	" 줄번호 표시
	set nu

	" 줄 번호 표시 너비 설정
	set nuw=5

	" 탭 크기 설정
	set ts=2
	set sw=2

	" 탭 >> 공백 변환 사용안함
	set noet
	set sts=0

	" 자동 줄바꿈 안함
	set nowrap

	" 자동 들여쓰기
	set autoindent

	" C프로그래밍 자동 들여쓰기
	set cindent

	" magic 기능 사용
	set magic

	" 이동 동작시 줄의 시작으로 자동 이동
	set sol

	" 비쥬얼 모드 동작 설정
	set sel=exclusive

	" 괄호짝 찾기에서 <> 도 찾도록 추가
	set mps+=<:>

	" 새로 추가된 괄호 짝 보여주기
	"set sm

	" 검색어 강조
	set hls

	" 검색시 파일 끝에서 되돌리기 안함
	set nows

	" 검색시 대소문자 구별 안함
	set ic

	" 스마트한 대소문자 구별 기능 사용
	set scs

	" 항상 status 라인을 표시
	set ls=2

	" 커스텀 확장자들에게 파일 형식 설정
	"au BufRead,BufNewFile *.dic setl ft=php

	"파일 형식에 따른 신택스 하이라이팅 켜기
	sy enable

"-----------------------------------------------------------------------"
" ctags database path 설정 
"-----------------------------------------------------------------------"
	set tag=./tags;/

"-----------------------------------------------------------------------"
" cscope database path 설정 
"-----------------------------------------------------------------------"
	function! LoadCscope()
		let db = findfile("cscope.out", ".;")
		if (!empty(db))
			let path = strpart(db, 0, match(db, "/cscope.out$"))
			set nocscopeverbose " suppress 'duplicate connection' error
			exe "cs add " . db . " " . path
			set cscopeverbose
		endif
	endfunction
	au BufEnter /* call LoadCscope()

"-----------------------------------------------------------------------"
" Tag List 환경설정 
"-----------------------------------------------------------------------"
	filetype on				" vim filetype on
	nmap  :TlistToggle			" F7 key = Tag List Toggle
	let Tlist_Ctags_Cmd = "/usr/bin/ctags"	" ctags 프로그램 위치
	let Tlist_Inc_Winwidth = 0		" window width change off
	let Tlist_Exit_OnlyWindow = 0		" tag/file 선택 완료 시 taglist
						" window close = off
	let Tlist_Auto_Open = 0			" vim 시작 시 window open
	let Tlist_Use_Right_Window = 1		" vim 시작 시 window open

"-----------------------------------------------------------------------"
" Source Explorer 환경설정
"-----------------------------------------------------------------------"
	nmap  :SrcExplToggle			" F8 key = SrcExpl TOggle
	nmap  h					" 왼쪽 창으로 이동
	nmap  j					" 하단(preview) 창으로 이동
	nmap  k					" 상단 창으로 이동
	nmap  l					" 오른쪽 창으로 이동

	let g:SrcExpl_winHeight = 8		" SrcExpl 윈도우 높이 지정
	let g:SrcExpl_refreshTime = 100		" refreshing time = 100ms
	let g:SrcExpl_jumpKey = ""		" 해당 definition으로 jump
	let g:SrcExpl_gobackKey = ""		" back
	let g:SrcExpl_isUpdateTags = 0		" tag file update = off

"-----------------------------------------------------------------------"
" NERD Tree 환경설정
"-----------------------------------------------------------------------"
	let NERDTreeWinPos = "left"		" NERD Tree위치 = 왼쪽
	nmap  :NERDTreeToggle			" F9 Key = NERD Tree Toggle

"-----------------------------------------------------------------------"
" Runtime Path Manipulation
"-----------------------------------------------------------------------"
	execute pathogen#infect()