VIM 자세한 설정

Vim/Plug-Ins 2013. 1. 15. 16:35 |

초보 개발자의 Vim 개인 설정


그동안 미루고 미루어 오다가 드디어 Vim 개인 설정을 마쳤습니다. 웹에 퍼져있는 여러 vimrc 파일들을 참조하고 Vim 영문매뉴얼도 뒤져 보았네요. 그리고 제 영어 실력이 어느 정도인지를 뼈져리게 깨달았습니다. OTL

플러그인

사용하는 플러그인은 아래와 같습니다.

  • a.vim : C/C++ 헤더파일 생성/스위치 플러그인.
  • c.vim : C/C++ 지원 플러그인.
  • taglist : 함수, 메소드, 클래스 등의 목록을 별도의 창에 보여주는 플러그인. ctags 필요.
  • NERD_tree.vim : 향상된 익스플로러 플러그인.
  • dic : 터미널용 야후/네이버 사전 프로그램. Vim의 Shift+k 키로도 사용 가능.

vimrc

scripte utf-8
" vim: set fenc=utf-8 tw=0: "
" 파일의 첫부분에 위의 2줄을 꼭 남겨 두십시오. "

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 6l4ck3y3(까막눈)의 Vim 설정 파일 "
" 마지막 수정: 2010-06-14 "
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 프로그램 기본 설정 "
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" 오리지널 Vi 와의 호환성을 없애고, Vim 만의 기능들을 쓸 수 있게 함. "
set nocp

" 모든 옵션을 원래대로 복원 "
set all&

" 명령어 기록을 남길 갯수 지정 "
set hi=100

" 오류음 대신 비주얼벨 사용 "
set vb

" 매크로 실행중에 화면을 다시 그리지 않음 "
set lz

" 프로그램 시작시 플러그인 로드 "
set lpl

" 인코딩 설정 "
" 문서를 읽을 때 BOM 을 자동으로 제거하려면, fencs 맨 앞에 ucs-bom 를 추가하세요. "
"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 printencoding=utf8 "
" set printmbcharset=ISO10646 "
" set printmbfont=r:나눔고딕코딩,c:yes,a:yes "
" set printfont=나눔고딕코딩\ 10 "

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 모양 설정 "
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

if has("gui_running")

" gVim의 기본폰트 설정 "
   
if has("win32")
       
set gfn=Fixedsys:h10:cHANGEUL
    elseif has
("unix")
       
set gfn=나눔고딕코딩\ 10
    endif

" gVim의 배경테마 설정 "
    colorscheme desert

" gVim 시작시 크기지정 "
   
set lines=30
   
set co=150

endif

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 편집 기능 설정 "
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" ESC키를 누르면 한글 모드가 해제 "
" 입력모드에서 이전 언어 설정 모드 유지 "
inoremap
<ESC> <ESC>:set imdisable<CR>
nnoremap i
:set noimd<CR>i
nnoremap I
:set noimd<CR>I
nnoremap a
:set noimd<CR>a
nnoremap A
:set noimd<CR>A
nnoremap o
:set noimd<CR>o
nnoremap O
:set noimd<CR>O    

" 입력모드에서 Ctrl+d로 백스페이스 기능 "
map
! <C-d> <BS>

" Shift+Enter로 아래줄로 커서 넘기기 기능 "
map
<S-CR> <ESC>o
map
! <S-CR> <ESC>o

" 괄호 자동 완성 후 입력모드로 전환 "
map
! () ()<ESC>i
map
! (); ();<ESC>hi
map
! [] []<ESC>i
map
! {} {}<ESC>i
map
! {}; {};<BS><ESC>i<CR><ESC>O<BS>
map
! <> <><ESC>i
map
! '' ''<ESC>i
map
! "" ""<ESC>i

" 현재 줄의 마지막에 이어 쓰기 "
map
! <C-TAB> <S-CR><ESC>i<BACKSPACE>

" 파일의 종류를 자동으로 인식 "
filetype on

" 자동 문법 강조 "
syntax on

set nocompatible         " Vim 디폴트 기능들을 사용함 "
set number                " 줄 번호를 붙임  "
set backspace=2         " 삽입 모드에서 백스페이스를 계속 허용 "
set autoindent             " 자동 들여쓰기 "
set cindent             " C 언어 자동 들여쓰기 "
set smartindent         " 역시 자동 들여쓰기 "
set nowrap                 " 자동 줄바꿈 안함  "
set nowrapscan             " 찾기에서 파일의 맨 끝에 이르면 계속하여 찾지 않음 "
set ignorecase             " 찾기에서 대/소문자를 구별하지 않음 "
set incsearch             " 점진적으로 찾기  "
set nobackup             " 백업파일을 만들지 않음 "
set nojoinspaces         " J 명령어로 줄을 붙일 때 마침표 뒤에 한칸만 띔 "
set ruler                 " 상태표시줄에 커서 위치를 보여줌 "
set tabstop=4             " 간격 "
set shiftwidth=4         " 자동 들여쓰기 간격 "
set keywordprg=ydic        " K를 눌렀을 때 실행할 명령어 "
set showcmd             " (부분적인)명령어를 상태라인에 보여줌 "
set showmatch             " 매치되는 괄호의 반대쪽을 보여줌 "
set autowrite             " :next나  :make 같은 명령를 입력하면 자동으로 저장 "
set linespace=3         " 줄간격 "
set title                 " 타이틀바에 현재 편집중인 파일을 표시 "
set statusline=\ %<%l:%v\ [%P]%=%a\ %h%m%r\ %F\     " 다중 문서 작업을 위한 Status 줄 "
set tags+=./tags        " add current directory's generated tags file to available tags "

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 플러그인 설정 "
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" c.vim 플러그인의 C_InsertTemplate() 함수 맵핑 설정. "
noremap <unique> <script> <Plug>CommentFuncDes :call C_InsertTemplate("comment.function")<CR>
noremap <unique> <script> <Plug>CommentFrame :call C_InsertTemplate("comment.frame")<CR>

" omnicppcomplete.vim 플러그인 설정. "
" autocmd CursorMovedI * if pumvisible() == 0|pclose|endif "
" autocmd InsertLeave * if pumvisible() == 0|pclose|endif "

" let OmniCpp_MayCompleteDot = 1         autocomplete with . "  
" let OmniCpp_MayCompleteArrow = 1          autocomplete with -> "
" let OmniCpp_MayCompleteScope = 1          autocomplete with :: "
" let OmniCpp_SelectFirstItem = 2          select first item (but don't insert) "
" let OmniCpp_NamespaceSearch = 2          search namespaces in this and included files "
" let OmniCpp_ShowPrototypeInAbbr = 1    show function prototype (i.e. parameters) in popup window "
" let OmniCpp_DisplayMode = 1 "
" let OmniCpp_LocalSearchDecl = 1 "

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 단축키 설정 "
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" F1은 프레임 형식의 주석 달기, Ctrl+F1은 함수에 대한 설명 달기 "
map <F1> <Plug>CommentFrame
map! <F1> <ESC><F1><ESC>a
map <C-F1> <Plug>CommentFuncDes
map! <C-F1> <ESC><C-F1><ESC>a

" F2는 탭 열기, Ctrl+h,l로 탭 이동 "
map <F2> :tabnew<CR>            
map <C-h> gT
map <C-l> gt

" F3은 저장 "
map <F3> :w!<CR>                  
map! <F3> <ESC><F3>

" F4는 현재창 닫기 "
map <F4> :q!<CR>

" F5는 TagList 열기 "
map <F5> :TlistToggle<CR>

" F6은 파일 비교하기, Ctrl+F6로 파일 비교하기 해제 "
map <F6> :diffthis<CR><C-w><C-w>:diffthis<CR>
map <C-F6> :diffoff<CR><C-w><C-w>:diffoff<CR>

" F7은 Hex 모드 "
map <F7> :%!xxd<CR>

" F8은 ctags 생성 "
map <F8> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR><CR>

" Ctrl+k는 폴딩 접기, Ctrl+j로 폴딩 열기 "
map <C-k> v]}zf<CR>
map <C-j> zo<CR>

" Ctrl+s는 소스파일과 헤더파일 전환 "
map <C-s> :A<CR>

" Ctrl+e는 디렉토리 목록 열기, Ctrl+Enter로 파일 선택 후 디렉토리 목록 닫기 "
map <C-e> :NERDTree<CR>

" Ctrl+y 사전 검색, 단어 위에서 Shift+k를 눌러도 동작 "
map <C-y> :!ydic

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Vim 개인 설정 완료  "
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""


코딩 습관

전 코딩할 때 괄호나 따옴표가 있으면 미리 닫고나서 그 내부를 작성합니다. 그래서 ( ) 이 다음에 방향키로 왼쪽으로 이동해야 하죠. 이런 제 습관 때문에 "+Space 조합으로 괄호 자동 완성 후 입력모드로 전환" 이라는 것을 설정하였습니다. 이 설정 덕분에 상당히 편하게 코딩할 수 있게 되었죠.

Vim에서 인쇄는?

vimrc 파일을 보시면 알겠지만, 인쇄와 관련하여 몇몇의 설정이 주석으로 처리되어 있습니다. Vim에서 한글을 프린터로 인쇄하려고 노력한 흔적입니다. ㅜㅜ 몇 날 몇 일동안 새벽까지 잠을 안 자면서까지 관련 문서를 뒤져봐도 뾰족한 수가 안 나오네요. 

분명 Vim에서는 한국어, 중국어, 일본어를 지원하고 있습니다. 그리고 인쇄에 관해서는 별도로 printmbfcharset와 printencoding 설정을 해주아야 하죠. 그런데 설정을 하고나서 아무것도 없는 빈 백지만 인쇄되는 기이한 현상이 발생하는 것입니다. 이 문제를 해겨하려고 수 십장의 A4 용지와 많은 시간을 허비했죠. 결국은 치솟는 스트레스를 진정시키고 GG 선언했습니다. (어쩌면 나눔고딕코딩 폰트의 문제일지도...)

저 주석은 그걸 잊지 않겠다는 의미로 남겨 두었습니다.

출처: http://hisjournal.net/blog/176

'Vim > Plug-Ins' 카테고리의 다른 글

Vundle for Windows  (0) 2013.02.20
Plug-in 모음  (0) 2013.02.05
autocomplpop (vim 자동완성 플러그인)  (0) 2012.05.09
c.vim 플러그인 설치  (0) 2012.05.09
Taglist 플러그인 설치법  (0) 2012.05.09
Posted by scii
:

[Windows] gvim 설정파일

Vim/etc 2013. 1. 15. 01:15 |



_vimrc(win).zip


color scheme file

내가 조금 변경한 컬러 스키마 파일 (변경한 이유는 jellybeans가 파이썬에서는 in의 색상이 변하지 않아서.)

13_02_16_SAT 에 변경함. 파이썬 파일에서는 slate2나 xoria를 쓰고 C나 C++은 jelly 그냥 써야지~!!

colors.zip


VEX 에 맞게끔 수정한 컬러스키마

jellybeans_VEX.vim


이렇게 셋팅하려면, 

" python 파일을 열 때는 컬러스키마를 slate2_Jeon로 쓴다. 

if has("gui_running")

au FileType python  colorscheme slate2_Jeon 

endif

이렇게만 명령하면 된다.


※ _vimrc에 번들이 설정되어있다. 주의할 점은 pydiction 플러그인이다. 이것은 내가 설정한 Tab 단축키와 겹쳐서 조금 수정을 해야한다.

C:\Users\Administrator\.vim\bundle\pydiction\after\ftplugin 의 python_pydiction.vim 파일을 열어 사진과 같이 수정해주면 된다.


'Vim > etc' 카테고리의 다른 글

[Linux] vim 나의 설정파일  (0) 2013.01.16
Plug-in을 설치한 vim 편집기 모습  (0) 2013.01.16
구문강조 만들기  (0) 2012.12.05
VIM에서 유용한 설정들.  (0) 2012.05.02
vim 편집기 단축키  (0) 2012.05.02
Posted by scii
:

구문강조 만들기

Vim/etc 2012. 12. 5. 03:08 |

$HOME/.vimrc 에서 syntax on 명령을 내려서 기본적으로 구문강조를 설정한다.


만약, 구문 강조 파일을 만들었다면...

$HOME/.vim/syntax/강조유형.vim(ex: vfl.vim)로 저장한다.

여기서 강조유형은 확장자가 된다. 즉, 확장자가 vfl이면 vfl.vim


이런 강조유형을 설정하려면 vimrc에서 au BufRead,BufNewFile *.확장자 set filetype=강조유형

이런식으로 설정한다.


그리고, 해당 문법을 사용하는 새파일 생성 시 템플릿 로드는

$HOME/.vim/skel/tmpl.확장자

이렇게 만들면 된다.


'Vim > etc' 카테고리의 다른 글

[Linux] vim 나의 설정파일  (0) 2013.01.16
Plug-in을 설치한 vim 편집기 모습  (0) 2013.01.16
[Windows] gvim 설정파일  (0) 2013.01.15
VIM에서 유용한 설정들.  (0) 2012.05.02
vim 편집기 단축키  (0) 2012.05.02
Posted by scii
:


vimbook-OPL.pdf


문자열 치환: %s/old/new/g  => %는 문서전체, s는 치환, old는 찾는 문자열, new는 바꿀 문자열, g는 한줄에 여러개 있는 것 다 바꿈. global


화면 분할: ctrl + sw -v 또는 :split, vsplit


분할된 화면에서 파일 부르기: E, e/mnt/rrr/hello.cpp


좌우 비교: diffthis (양쪽에서 모두 명령어를 넣어주어야한다.)


서로 다른 블록에서 반대쪽으로 내용 덮어쓰기: diffput


서로 다른 블록에서 반대쪽 내용으로 덮어쓰기: diffget

'Vim > Tutorial' 카테고리의 다른 글

vim 에러 처리  (0) 2013.02.02
명령어 표기법에 대해서  (0) 2013.02.02
Vim Key mapping  (0) 2013.01.16
유용한 명령어들 몇가지  (0) 2013.01.15
vi editor  (0) 2012.05.02
Posted by scii
:



대박 플러그인이다... 내가 찾던 바로 그것이야!!!! 


자동완성 플러그인 중에 검색의 검색으로 선택한 것이 이 플러그인이다. 


이 플러그인은 기존의 플러그인들과 다르게 입력을 하고 있으면 자동으로 추천 단어를 보여준단다.


단어 선택 및 적용 키


Tab, Enter, Ctrl+p, Ctrl+n


다운 : http://www.vim.org/scripts/script.php?script_id=1879


압축푼 후 각각맞게 ~/.vim/plugin에 넣어주고 ~/.vim/doc에 넣어주고 나머진 ~/.vim/에 넣어주면 됨. 압축풀어보면 어떻게 넣어야하는지 알게됨.


그리고  ~/.vimrc에 추가하면 더 좋아지는 것이 있다. 개인차가 있겠지만


출처는 : http://hacker.golbin.net/wp/archives/1354




"autocomplpop에서부터 추가하면 된다.


이 코드를 사용하면 탭과 엔터로 자동완성이 된다. 


터미널에서 사용하면 ctermbg를 사용하면되고, gui를 사용하면 guibg와 guifg 를 사용하면 된다.


"========== AutoCompletePop ==========

function! InsertTabWrapper()

    let col=col('.')-1

    if !col||getline('.')[col-1]!~'\k'

    return "\<TAB>"

    else

    if pumvisible()

       return "\<C-N>"

    else

       return "\<C-N>\<C-P>"

    end 

    endif

endfunction


inoremap <TAB> <c-r>=InsertTabWrapper()<cr>


hi Pmenu ctermbg=blue

hi PmenuSel ctermbg=yellow ctermbg=black

hi PmenuSbar ctermbg=blue



플러그인이 7.1에 맞춰져 있어서 vim 7.0버전은 설치가 안된단다. 만약 vim 7.0 버전을 사용한다면 autocomplpop.vim 파일 191번째 줄의 if v:version < 701 부분을


if v:version < 700 으로 바꿔주면 됨.


'Vim > Plug-Ins' 카테고리의 다른 글

Plug-in 모음  (0) 2013.02.05
VIM 자세한 설정  (0) 2013.01.15
c.vim 플러그인 설치  (0) 2012.05.09
Taglist 플러그인 설치법  (0) 2012.05.09
vim 플러그인 인스톨  (0) 2012.05.08
Posted by scii
:

c.vim 

Vim을 c/c++ compiler IDE처럼 구성해주는 Plug-in이다. 파일생성 시 자동 주석 생성과 단축키로 화면 전환없이 바로 컴파일하는 것 때문에 설치한다.


c.vim을 설치하면 파일생성 시 자동으로 프로그램의 주석을 파일머리에 달아준다. 이때 사용되는 작성자 이름과 회사명등의 대한 정보를 미리 Templete에 달아두면


좋다. c.vim Templete파일의 위치: 만약 ~/.vim에 설치했다면, ~/.vim/c-support/templates/templates



사용 법


실행과 관련된 단축키

<Alt - F9>     Save and Compile

<F9>             Link

<Ctrl-F9>      Run

<Shift-F9>    Cmd. line arg


다운 받음 :http://www.vim.org/scripts/script.php?script_id=213


.vim확장자는 ~/.vim/plugin에 넣는다. 도움말은 doc에 넣는다.


출처 : http://nextcontext.tistory.com/18





'Vim > Plug-Ins' 카테고리의 다른 글

VIM 자세한 설정  (0) 2013.01.15
autocomplpop (vim 자동완성 플러그인)  (0) 2012.05.09
Taglist 플러그인 설치법  (0) 2012.05.09
vim 플러그인 인스톨  (0) 2012.05.08
vim plugin 설치방법  (0) 2012.05.08
Posted by scii
:

taglist를 사용하려면 ctag가 설치되어있어야 한다. 


우선 apt-get install ctag를 설치한다. 


그 다음, taglist를 다운 http://www.vim.org/scripts/script.php?script_id=273


압축을 풀면 doc디렉토리랑 plugin파일이 보임.


터미널에서 vim을 친 후 vim안에서 :echo $VIMRUNTIME을 친다. 그러면 vim이 실제사용되고 있는 디렉토리가 나온다. ex) /ur/share/vim/vim73(버전)


그곳에다가 doc디렉토리에 있는 것을 옮긴다. /ur/share/vim/vim73/doc로 옮기고 


plugin안에 있는 것은 /ur/share/vim/vim73/plugin으로 옮긴다.


그런다음, vim에서 :Tlist를 타이핑 하면 taglist가 실행된다. ^w+w 로 화면 옮겨다님. +,-로 접었다 폈다 할 수 있다.


 


'Vim > Plug-Ins' 카테고리의 다른 글

VIM 자세한 설정  (0) 2013.01.15
autocomplpop (vim 자동완성 플러그인)  (0) 2012.05.09
c.vim 플러그인 설치  (0) 2012.05.09
vim 플러그인 인스톨  (0) 2012.05.08
vim plugin 설치방법  (0) 2012.05.08
Posted by scii
:

vim 플러그인 인스톨


download
http://vim.sourceforge.net/scripts/script.php?script_id=273


위 사이트에서 최신버전을 다운받도록 한다.


Install

 - root권한이 없거나 한 계정에서 사용할 때


: ~/.vim/plugin/taglist.vim


 - root권한이 있고 모든 계정에서 사용할 때

: /usr/share/vim/vim{version}/plugin/taglist.vim

 
설정
.vimrc를 다음과 같이 설정하면 사용이 편리해진다.

map <F3>  :TlistToggle<CR>

F3 키를 누르면 TlistToggle이 실행 및 종료됨

'Vim > Plug-Ins' 카테고리의 다른 글

VIM 자세한 설정  (0) 2013.01.15
autocomplpop (vim 자동완성 플러그인)  (0) 2012.05.09
c.vim 플러그인 설치  (0) 2012.05.09
Taglist 플러그인 설치법  (0) 2012.05.09
vim plugin 설치방법  (0) 2012.05.08
Posted by scii
: