'vim plugin'에 해당되는 글 1건

  1. 2012.11.28 Vundle으로 Vimplugin을 쉽게 관리해 보자 (+ vimplugin 모음) 6

Vundle으로 Vimplugin을 쉽게 관리해 보자 (+ vimplugin 모음)

0, Vundle(Bundle? 이란...)

간단히 말해서, vim plugin 관리자 에요...

pacman, rpm, apt-get이 시스템의 패키지를 관리하는거라면 얘는 vim plugin을 관리하죠.

번잡하게 vim.org에서 script 파일다운받아서 플러그인 디렉토리에 저장하는 삽질을 얘가 대신 해 줍니다.

그런고로 설치도 쉽고, 유지하기도 쉽고, 삭제도 깔끔하게 되고좋죠.


1, 저장소로 부터 설치

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


2, ~/.vimrc에 다음 내용을 넣습니다

set nocompatible filetype off

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


" 필수 Bundle

Bundle 'gmarik/vundle'

" 이 사이에 원하는 번들(vim plugin)을 넣어줍니다.

filetype plugin indent on


3, 설정파일 다시불러오기

:so ~/.vimrc


4, 번들을 검색해 봅니다...

:BundleSearch


<<티스토리는 원본으로 사진올리기 참으로 힘드네여... 말풍선 안쓰면 원본(?)으로 올리기가 안되네요..

그래서 하는김에...일일이 스샷마다 말풍선을 달았습니다 -_-...>>


5, 원하는 번들을 검색합니다. 머 그냥 vim 에서 항상 찾던식으로.. (주의! 대소문자)

/SearchBundleName


6, 찾았으면 그 라인을 복사하고,  ~/.vimrc (" 이 사이에 원하는 번들(vim plugin)을 넣어줍니다.)아래에 집어 넣습니다. 

그냥 설치해도 되긴하지만.vimrc에 명확하게 정의를 해 놓아야 관리하기가 더 쉽겠죠

(정 안되면 플러그인 디렉토리 뒤져보면 되긴 하지만...)


7, 설정파일을 다시 불러온후, 설치를 시작합니다.

:so ~/.vimrc:
:BundleInstall


추가사항: 삭제할때는 ~/.vimrc에서 Bundle을 주석/삭제한후 vim을 재 시작 하신 후에

:BundleClean하면 됩니다. (BundleClean이라고 해서 전부가 초기화 되는건 아네요. 주석친거만 삭제!)


8, 이제 실제 제가 사용하는 vim plugin을 정리해 보겠습니다.

아마 저번에도 포스팅한게 있지 않을까 싶긴 한데... 추가된것도 많고, 한 김에 다 정리해 보려구요~

자 시작!


Bundle 'minibufexpl.vim'
" 버퍼를 보기쉽게 만들어 줍니다



~/.vimrc


let g:miniBufExplModSelTarget = 1
let g:miniBufExplorerMoreThanOne = 0
let g:miniBufExplModSelTarget = 0
let g:miniBufExplUseSingleClick = 1
let g:miniBufExplMapWindowNavVim = 1
let g:miniBufExplMapCTabSwitchBuffs = 1
let g:miniBufExplHSplit = 10
let g:miniBufExplSplitAbove=1 "let g:miniBufExplSplitBelow=1
let g:alternateNoDefaultAlternate = 1


" Alt + number 맵핑

map  ^[1:bf<CR>
map  ^[2 :bf<CR> :bn1<CR>
map  ^[3 :bf<CR> :bn2<CR>
map  ^[4 :bf<CR> :bn3<CR>
map  ^[5 :bf<CR> :bn4<CR>
map  ^[6 :bf<CR> :bn5<CR>
map  ^[7 :bf<CR> :bn6<CR>
map  ^[8 :bf<CR> :bn7<CR>

map  ^[9 :bf<CR> :bn8<CR>


Bundle 'matchparenpp'

" 괄호 (),[],{}에 커서를 갖다대면, 상대 괄호를 깜박여 줍니다. 설정할거 없이 그냥 깔아 쓰면 됩니다. 참 쉽죠?


Bundle 'Conque-Shell'

" vim내부에서 shell을 사용합니다.아직은 화면출력에 문제가 있어, 명령어를 잠시 띄울때 사용합니다.

" 개행이 많을경우, clear, man, 기타 ncurses 프로그램을 사용한후 프로그램을 종료하면 잔상이 남는 문제가 있습니다.

" 그냥 잠시동안 사용하고 싶을때 사용하면 좋을거 같네요.

" 아 그리고 중요한것, vim컴파일 할때 python 확장기능이 사용이 가능하게 되어야 사용이 가능합니다.

" 추가적으로 설정, 더 자세한 것은 :help



~/.vimrc

" let g:ConqueTerm_InsertOnEnter = 1
" let g:ConqueTerm_CWInsert = 1
" let g:ConqueTerm_CloseOnEnd = 1      "쉘을 끝내면 창도 자동으로 닫습니다.


Bundle 'sudo.vim'

" root권한이 있는 파일을 저장할때 사용합니다.

" 저장할때는 다음과 깉이 합니다.

:e sudo:filepath


Bundle 'YankRing.vim'

" y,yy명령으로 복사한 내용을 보고, 붙여넣기 


" 명령은 다음과 같습니다. 명령자체가 설명이니까, 따로 설명은 하지 않겠습니다~

:YRShow

:YRSearch

:YRClear

:YRPop

:YRPush


" ~/.vimrc 에 yank파일경로를 지정합니다. 안하면 홈 디렉토리가 지저분해 지니까요.

let g:yankring_history_dir = '~/etc/vim'


Bundle 'https://github.com/Lokaltog/vim-powerline.git'

" powerline, vim의 아래창(상태표시줄)을 좀더 visual하게 보여줍니다.

" Shell의 TERM 변수가 "xterm-86color" 또는 "xterm-256color"로 설정되어 있어야 안깨지고 제대로 나옵니다.
" ps; git로 설치하여야 합니다. 일단 제가 설치할때는 번들이 있긴한데 git에서 받아오질 못하더라고요...

" ~/.vim/bundle/vim-powerline/autoload/Powerline/Colorschemes

" Pl#Hi#Segments(['mode_indicator']의 값을 변경하면, MODE색을 다른것으로 바꿀수 있습니다.

" 그리고 좀 더 fansy하게 보이려면 다음을 참조해 보세요.

" https://github.com/Lokaltog/vim-powerline/blob/develop/fontpatcher/README.rst


Bundle 'c.vim'

" c의 skel을 미리 작성해 줍니다. snipMate랑 같이쓰세요...

" 자주 쓰는거 몇개만 요약합니다. 명령 모드에서 다음을 입력 해 보세요.

" 간단한건 아래의 박스... 더 많은 단축키는 여기를 참조하세요 http://lug.fh-swf.de/vim/vim-c/csupport.html

\p< : include (#include <stdio.h>)

\p"  : include (#include "stdio.h" )

\im : main function

\if   : user defined function

\ias : assert();


Bundle 'DoxygenToolkit.vim'

" doxygen을 위한 주석 생성기능 입니다.

" 이렇게 하면 나중에 문서화 하기 훨씬 쉽겠죠?





Bundle 'EasyMotion'

" 단어(word)간 이동을 쉽게 합니다, \\w를 눌러보세요 :D

" 주변의 위치로 이동할때, 이제 hhh...,lll...www...WWW... 이런거 좀 적게 하게 되겠죠.

" ps; 단어 이동이 w니까! 로 생각하면 외우시기 좋을겁니다.


 \\w 

 로 단어 이동

 \\W 

 앞으로 단어 이동

 \\f

 뒤로 글자 검색

 \\F

 앞으로 글자 검색



Bundle 'neocomplcache'

" 향상된 자동완성 기능


Bundle 'ctags.vim'

Bundle 'cscope.vim'

" 아래 2개는 C,C++프로그래머라면 필수... 말이 필요없죠.

" ctrl + ] 이거 하나만으로도 대단하지 않나요? 해더파일 보는거랑...


Bundle 'cscope-quickfix'

" 제가 ctags와 더불어 오랬동안 사용했던 확장기능 이죠 ㅋㅋ..

" 컴파일 결과를 나타내는 결과 버퍼를 사용합니다. 에러/경고가 발생했을떄 편하게 위치를 이동할수 있습니다.

"~/.vimrc

autocmd BufReadPost quickfix    setlocal nonu
autocmd FileType asm            set makeprg =nasm\ -f\ bin\ -o\ %<.img\ %
autocmd FileType c,cpp          set makeprg =gcc\ -g\ -Wall\ -O2\ %\ -o\ %<
autocmd FileType sh               set makeprg =%


" 현재 디렉토리에 Makefile이 있다면, 기존 makeprg 대신 make명령을 사용한다           
func! Makefile_Run()                                                                 
    let now_file_path = expand("%:h")                                                
    if (now_file_path == "")                                                         
        let now_file_path = "."                                                      
    endif                                                                            
    if filereadable(now_file_path."/Makefile")                                       
        exec 'lcd ' . now_file_path                                                  
        set makeprg=make                                                             
    endif                                                                            
                                                                                     
    make                                                                                                                                                                                    
endfun


"저장후 컴파일해서 결과를 봅니다,

"저는 F10을 누르면 컴파일이 되고 아래에 결과가 나오게 설정했어요. 원하시는 키로 바꿔주세요.

map <F10> :ccl<CR>:w!<cr>:call Makefile_Run()<CR>:botright cwindow<CR><CR>








Bundle 'snipMate'

" 명령어 자동완성 기능입니다. c.vim은 복잡한(?)키를 입력해야하지만, 얘는 한방이에요...

" 단점이 있다면, 패턴이 그리 많지 않다는것... 그래서 c.vim과 같이 사용하길 추천합니다.

' 많이 사용하는 자동완성 타입은 다음과 같습니다.


-전처리기

 #include <stdio.h>

 inc  + <TAB>

 #include "Filename.h"

 Inc  + <TAB>

 #ifdef ~ #define ~ #endif

 Def  + <TAB>

 #define  def  + <TAB>
 #ifdef ~ #endif

 ifdef + <TAB>


- 제어, 반복문

 if

 if   + <TAB>

 else  el  + <TAB>
 do ~ while  do + <TAB>
 while  wh + <TAB>
 for  for + <TAB> (Loop), forr + <TAB> (Custom)


- 함수

 function

 fun + <TAB>, fund + <TAB>, main + <TAB>


- 선언

 typedef struct

 tds + <TAB>

 enum  tde + <TAB>


- 출력

 printf

 pr + <TAB>
 fprintf  fpr + <TAB>


전 snipMate/snippets/c.snippets 를 다음과 같이 약간 고쳐서 사용합니다. (2013/9/16)

데이터타입/디버그/기타 구문을 입맛에 맞게 추가/수정했습니다...

만약, 추가하실경우 snippet 이름이 겹치지 않게 주의하세요...




" 예> *.c 파일에서 자동완성한 모습.




Bundle 'tComment'

" 주석을 치는 확장기능. c,cpp,sh 등 다양한 포맷의 소스파일에 주석을 쉽게 칠수 있습니다.

" 주석을 해제할때도 "주석 체크"된 곳을 Block으로 잡고나서 "( Ctrl ) + ( _ ) + ( Ctrl ) + ( _ ) 하시면 해제 됩니다.

" 키가 복잡하다.. 하시는 분은 .vimrc에서 shortkey바꾸면 되겠죠.


Bundle 'surround.vim'

" 특정문자열을 태그/따옴표로 감싸는 기능. html태그 string형을 선언할때 유용하다.

" (명령모드에서) vi(블럭잡기) + w(단어) + s (sorround를 사용) + 감쌀 문자열 이런식으로 응용해서 사용합니다.

" 둘러싸는 기능 뿐만아니라, 삭제, 변경(작은따옴표를 큰따옴표로)도 가능합니다.


- 추가

Hello_world -> viws"

=> "Hello_world"


Hello_world ->viws'

=> 'Hello_world'


Hello_world -> viws[

=> [Hello_world]


Hello_world -> viws<head> ;viws< 하면 입력하시면 됩니다.

=> <head>Hello_world</head>


- 변경

"Hello_world"  -> cs"' # change surround '(작은따옴표) ->  '(큰따옴표)

=> 'Hello_world'


"Hello_world"  -> cs"' # change surround '(큰따옴표) ->  '(작따옴표)

=> 'Hello_world'


삭제

[Hello_world] -> ds[ # delete surround [ (중괄호)

Hello_world


Bundle 'ShowMarks'

" 왼쪽에 마크를 표시해 줍니다.



\mt   - ShowMarks 토글
\mo   - (마크가 되어있다면) ShowMarks를 계속 보여줍니다.
\mh   - 현재라인의 마크를 삭제합니다.
\ma   - 현재버퍼의 모든 마크를 삭제합니다.
\mm   - 현재라인에 마크를 답니다(마크번호는 사용가능한 다음 char,

예> 마크가 'b'로 되어있는 상태에서 \mm하면 현재라인에 마크를 'c'로 만듭니다.


~.vimrc


" 첫번째 라인 : 특정 타입을 무시합니다. h: Help, m : Non-modifiable, p : Preview, q : Quickfix, r : Readonly

" 두번째 라인 : 화면에 표시할 마크들을 표시합니다. defaults로 하면 일반적으로 쓰지 않는 마크들도 나와서 혼란...

let g:showmarks_ignore_type= "hprmq"
let g:showmarks_include= "abcdefhijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"


" 색깔을 변경합니다. 기본 xterm-256color로는 색깔 구별이 잘 되지 않더군요. 그래서 수정했습니다.

"l : lowcase, u : upcase, o : other, m: multiple

highlight ShowMarksHLl ctermfg=white ctermbg=blue
highlight ShowMarksHLu ctermfg=white ctermbg=blue
highlight ShowMarksHLo ctermfg=white ctermbg=blue
highlight ShowMarksHLm ctermfg=white ctermbg=blue


Bundle 'Align'

" 원하는데로 정렬을 지정할 수 있습니다

" http://www.drchip.org/astronaut/vim/align.html#Examples


Bundle 'Tagbar'

" taglist와 비슷한 확장기능인데... 그것보다 좀 더 좋아 보이네요.

" 사실 그전에 taglist로 적었다 이걸로 바꿨어요 ㅋㅋ



:TagbarOpen

:TagbarClose

:TagbarOpenAutoClose "Tagbar로 요소를 선택하면, 자동으로 Tagbar가 닫칩니다.

:TagbarSetFoldlevel n "최대 어느깊이n 까지 출력할까... 하는 옵션이라고 하네요. 전 C라 depth가 그리 깊게까지 못가봐서..

:TagbarToggle "Show/Hide 가 반복되는거죠 그냥...

:TagbarShowTag


~/.vimrc


let g:tagbar_left = 1 "0이면 오른쪽, 1이면 왼쪽에 출력

let g:tagbar_width = 30 "기본폭은 40입니다. 모니터가 작으면 줄여야 겠죠 ㅠ

let g:tagbar_autoclose = 1 "선택하면 자동으로 닫히게 하려면 1을 할당해 주세요

let g:tagbar_autofocus = 1 "커서가 이동하면 자동으로 선언된 위치로 갑니다 (?)


Bundle 'ctrlp.vim'

"프로젝트 디렉토리설정/파일이동을 쉽게 합니다

" 실행할떄는 :CtrlP, 창을 종료하려면, ESC를 두번 눌러 주시면 됩니다.



:CtrlP

:CtrlPDir

:CtrlPBufTag

:CtrlPBufTagAll

:CtrlPBuffer

:CtrlPChange


Bundle 'The-NERD-tree'

" 이번에도 디렉토리 이동을 쉽게 할 수 있는 확장기능 입니다.

" CtrlP보다 디렉토리 트리 이동이 가능합니다. 무었보다도 한눈에 트리가 보이니까 편하네요.

" 실행은 :NERDTree, 사용방법은 NERDTree창에 '?'를 입력하면 도움말을 보실수 있습니다. 

" 그래도 뭐 간단히 아래에 사용법 추가.

" hjkl로 방향이동

"기본적인 사용법은 다음과 같습니다

" 더 확실한 도움말을 원하시면, NERDTree에서 ?를 입력해 보세요.

? : 도움말창 토글

q : NERDTree 종료


- 디렉토리 이동

u : 상위 디렉토리로 이동

U : 상위 디렉토리로 이동, 모든 디렉토리리스트를 접음.

c : 선택된 디렉토의 하위 리스트를 새창을 열어서 보여줍니다.

C : 현재 선택된 디렉토리를 ROOT디렉토리로 두기(chroot)

cd : 현재 디렉토리명을 보여줌 (pwd)

P : 최상위 디렉토리(ROOT)로 이동

p : 부모 디렉토리로 이동

K : 첫번째 자식디렉토리로 이동

J : 마지막 자식디렉토리로 이동


- 새로고침

r : 현재 위치한 디렉토리를 새로고침

R : 전체 새로 고침


- 현재 선택된것이 디렉토리라면

o : 디렉토리 노드를 열기(보여주기)/접기

O : 모든 하위 디렉토리를 열기(보여주기)

X : 열린 모든 하위 디렉토리를 닫기(O와 반대)


- 현재 선택된것이 파일이라면

o : 미리보기 윈도우를 띄워서 미리보기

go : 미리보기

t : 새탭으로 열기

i : 수평분할해서 보여줍니다.

gi : 미리보기 윈도우를 사용하여 수평분할해서 보여줍니다.

s : 수직분할해서 보여줍니다.

gs : 미리보기 윈도루르 사용하여 수직분할해서 보여줍니다.


:NERDTreeFromBookmark "Bookmarkname" "북마크된걸 최상위 루트로 해서 엽니다

:NERDTreeToggle "Tagbar과 비슷한거죠머.. 토글기능. 없으면 나오게 하고, 이미 있으면 없애고..

:NERDTreeMirror "다른탭에 있는 NERDTree를 현재 탭과 공유하는 기능이라고 하는데... 사용하지 않아서 전 잘 모르겠어용

:NERDTreeClose

:NERDTreeFind "현재 열려있는 파일의 디렉토리의 트리를 봅니다. 그러니까, 현재디렉토리가 /tmp라면 새로띄우는 NERDTree의 Root는 /tmp 가 된다... 이말이죠.


~/.vimrc

let g:NERDChristmasTree = 1 "colorful 효과
let g:NERDTreeAutoCenter = 1
let g:NERDTreeChDirMode = 1
let g:NERDTreeHighlightCursorline = 1 "현재 커서 위치를 하일라이팅합니다. 기본값은 1

let g:NERDTreeSortOrder=['\.c$', '\.h$', '*'] "*.c, *.h, 기타파일 순으로 정렬합니다.

let g:NERDTreeBookmarksFile = ~/.NERDTreeBookmarks "북마크 파일을 지정합니다. 이값은 디폴트 값이에요.

let g:NERDTreeIgnore = ['\.vim$', '\~$'] "*.vim파일과 끝이'~'로 끝나는 파일들은 보여주지 않습니다.

let g:lNERDTreeWinSize = 20 "NERDTree의 폭을 설정합니다.

let g:NERDTreeMinimalUI = 1 "NERDTree에서 (위에뜨는) help/bookmark 메세지를 보여주지 않습니다.


" let g:NERDTreeShowHidden = 1 "숨김파일을 보여준다고 합니다.

" let g:NERDTreeShowLineNumbers=1 "라인을 보여줍니다

" let g:NERDTreeShowFiles = 0 "0이면 파일을 보여주지 않고, 디렉토리만 보여줍니다.

" let g:NERDTreeWinPos = right "이렇게 설정하면 오른쪽에 NERDTree가 나타납니다.

" 이외에 더 자세한건 :help NERDTree


Bundle 'echofunc.vim'

" 커서에 위치해 있는 define/변수가 정의된 형태를 상태표시줄에 보여준다

" 딱히 추가적으로 키 누르고 그런건 없습니다.

" 대신 "$ctags -R --fields=+lS ." 같이 해서 미리 태그를 만들어 둬야겠지요...

" 근데 옜날엔 잘 됬는데 이제 이 확장기능이 맛이 갔네요 아놔... 그래서 스샷은 딴걸로 대체 ㅠ.



~/.vimrc


let g:EchoFuncLangsUsed = ["java","cpp","c"] "적용할 언어

let g:EchoFuncPathMappingEnabled = 1 "특수디렉토리(홈디렉토리 하위파일들)에 있으면 파일경로를 자동으로 단축

let g:EchoFuncKeyNext = '<C-+>' "다음 태그

let g:EchoFuncKeyPrev = '<C-->' "이전 태그

"set statusline+=%{EchoFuncGetStatusLine()}

"let EchoFuncShowOnStatus = 1


Bundle 'myprojects'


ref :

https://github.com/gmarik/vundle

http://kldp.org/node/125263


ps; 와 이거 작성하는데 시간 무지하게 오래 걸리네요...

ps2; 그래도 그림이 있으니깐 훨씬 이해하기 쉬운듯...

ps3; 티스토리 글작성기능은 처음부터 끝까지 병신이네요.. 이렇게 에디트가 불편해서 어디 자주 포스팅 하겠나...?

ps4; 원래 완벽하게 다 포스팅 다해놓은 다음에 공개하려고 했는데, 그러다간 언제 할지 몰라서 그냥 이정도로 완성할래요 ㅠ


prev 1 next