728x90
출처: https://pobimoon.tistory.com/entry/vimrc-%EC%84%A4%EC%A0%95
플러그인
사용하는 플러그인은 아래와 같습니다.
- a.vim : C/C++ 헤더파일 생성/스위치 플러그인.
- c.vim : C/C++ 지원 플러그인.
- snippetsEmu.vim : 골빈해커 님이 추천하신 코드 블럭 자동 완성 플러그인.
- taglist : 함수, 메소드, 클래스 등의 목록을 별도의 창에 보여주는 플러그인. ctags 필요.
- NERD_tree.vim : 향상된 익스플로러 플러그인.
- dic : 터미널용 야후/네이버 사전 프로그램. Vim의 Shift+k 키로도 사용 가능.
vimrc 1
scripte utf-8
" vim: set fenc=utf-8 tw=0:
" 파일의 첫부분에 위의 2줄을 꼭 남겨 두십시오.
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 아리새의펜촉의 Vim 설정 파일
" 마지막 수정: 2009-04-18
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 프로그램 기본 설정
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 오리지널 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<CR><ESC>O<BS>
map! <> <><ESC>i
map! '' ''<ESC>i
map! "" ""<ESC>i
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 줄
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 플러그인 설정
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 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>
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 단축키 설정
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 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>
" 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 개인 설정 완료
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
vimrc 2
추천 플러그인입니다.
- autocomplpop - 키워드 추천(자동완성)
- snippetsemu - 코드 블럭 자동 완성
- minibufexplorer - 버퍼 상태 출력 및 이동
- closetag - html 태그 자동 닫기
- zoomwin - 윈도우 분할 상태 토글
"""""""""""""""""""""""""""""""""""""""""""""""""""""""
" vim 자체 옵션
"""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 백스페이스 사용
set bs=indent,eol,start
syntax on
colorscheme desert
set ts=4
"set nu
set syntax=c
"set ic
set shiftwidth=4
set formatoptions=croql
set smartindent
set autoindent
set expandtab
set nocompatible
" 파일인코딩
set fenc=utf-8
set fencs=utf-8,euc-kr,cp949,cp932,euc-jp,shift-jis,big5,latin1,ucs-2le
" 편집기록을 1000개까지 기억
set history=1000
" 검색어 강조 기능 사용
set hlsearch
" 검색시 파일 끝에서 처음으로 되돌리기 안함
set nows
" ().{} 에서 닫는 괄호를 입력할 때 일치하는 괄호를 보여준다.
set showmatch
set mousehide " Hide the mouse when typing text
filetype indent on
" 영역이 지정된 상태에서 Tab과 Shift-Tab 으로 들여쓰기/내어쓰기
" 를 할 수 있도록 함
vmap <Tab> >gv
vmap <S-Tab> <gv
" GUI이면, 시작시 크기, 위치 설정
"if has("gui_running")
" set lines=100
" set co=171
" winp 4 4
"endif
" 시작시 전체화면으로 설정
if has("win32")
au GUIEnter * simalt ~x
endif
" 항상 status 라인을 표시하도록 함
set ls=2
" status 라인이 어떻게 나오게 할 지 지정
"set statusline=\ %<%l:%v\ [%P]%=%a\ %h%m%r\ %F\
"set statusline=\ %f\ %m%h%r\ [%P]\ %a\ %<%l:%v\
set statusline=%<%F%h%m%r%h%w%y\ %{strftime(\"%Y/%m/%d-%H:%M\")}%=\ col:%c%V\ ascii:%b\ pos:%o\ lin:%l\,%L\ %P
set laststatus=2
" 줄 간격 설정
"set lsp=1
" 인코딩에 대한 설정, 윈도우, 리눅스 구분
" set encoding=euc-kr
if has("unix")
set encoding=euc-kr
elseif has ("win32")
set encoding=cp949
endif
" 확장자가 txt로 끝나는 파일을 작성시 혹은 편집시 폭을 80으로 설정한다.
" 이는 80column이 넘게 되면 자동으로 Enter을 넣어 준것과 같은 효과를 낸다.
"au BufNewFile,BufRead *.txt set textwidth=80
" 자동으로 }닫는 매크로
"au BufNewFile,BufRead *.c imap { {<CR>}<ESC>O
"au BufNewFile,BufRead *.c imap ( ( )<LEFT><LEFT>
" 백업파일 생성금지
"set nobackup
" 백업파일 이음
"set backupext=.bak
" 키를 잘 못 눌렀을 때 삑 소리 대신 화면이 번쩍이게 변경
set visualbell
"set novisualbell
" 화면 우측 하단에 현재 커서의 위치(줄, 칸)을 보여준다.
set ruler
" C 프로그래밍을 할 때 자동으로 들여쓰기를 한다.
"set cindent
" 만약 79번째 글자를 넘어가면 \
"set textwidth=79
" great wildmode/wildmenu and console mouse
set wildmenu
set wildmode=list:longest,full
set mouse=a
"console-menu
source $VIMRUNTIME/menu.vim
set cpo-=<
set wcm=<C-Z>
nmap ,menu :emenu <C-z>
" 함수 닫기표시
set sm
" 현재 라인 highlight
"highlight CurrentLine guibg=yellow guifg=black ctermbg=yellow ctermfg=black
"au! Cursorhold * exe 'match CurrentLine /\%' . line('.') . 'l.*/'
"set ut=10
" 한화면이 넘는 줄끝에 >나 <를 표시하여 내용이 더 있음을 알린다.
" 자동 줄바꿈으로 크게 필요없다.
"set listchar
" 폴더설정이 되어 있는 파일을 열었을때 폴더 되어 있는 레벨을 설정한다.
" 기본값은 0이고, 모두 폴딩된다.
set fdl=1
" 소스 파일이 폴딩되어 있을 때 폴딩범위를 보여주는 컬럼의 수를 설정한다.
set fdc=3
"""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 편리한 기능
"""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Tab 자동 완성시 가능한 목록을 보여줌
set wmnu
" 마지막 편집 위치 복원 기능
au BufReadPost *
\ if line("'\"") > 0 && line("'\"") <= line("$") |
\ exe "norm g`\"" |
\ endif
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" device 개발용 path변수
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"set path=/source/fdik/kernel/linux/include,/usr/include
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Plugin 설정
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" ctags set
set tags=./tags,../tags,../../tags
if version >= 500
func! Sts()
let st = expand("<cword>")
exe "sts ".st
endfunc
nmap ,st :call Sts()<CR>
func! Tj()
let st = expand("<cword>")
exe "tj ".st
endfunc
nmap ,tj :call Tj()<CR>
endif
" cscope set
if has("unix")
set csprg=/usr/bin/cscope
elseif has ("win32")
set csprg=e:\util\cscope.exe
endif
set csto=0
set cst
set nocsverb
if filereadable("./cscope.out")
cs add cscope.out
endif
set csverb
" man pages options
func! Man( )
let sm = expand("<cword>")
exe "!man -S 2:3:4:5:6:7:8:9:tcl:n:l:p:o ".sm
endfunc
nmap ,ma :call Man( )<CR><CR>
" TagExplorer 용 설정
" 리스트에 표시될 파일확장자 지정
let TE_Inlucde_File_Pattern='.*\.c$\|.*\.h$\|.*\.cap$\|.*\.bat$\'
" Taglist에 대한 설정
" Tlist가 가로로 열리게 만든다.
"let Tlist_Use_Horiz_Window = 0
" Tlist의 기본은 30
"let Tlist_WinWidth = 21
"let Tlist_Inc_WinWidth = 0
" Tlist을 좀 더 편리하게 조정한다.
function! MyTlist()
exe 'Tlist'
if exists('g:MyTlist') && g:MyTlist == 1
let g:MyTlist = 0
"exe ':<C-W> ='
else
let g:MyTlist = 1
exe 'vert resize 95'
endif
endfunction
"nnoremap <slient> <F7> :Tlist<CR>
"nnoremap <slient> <F7> :call MyTlist()<CR>
" EnhancedCommentify 주석 처리 plugin
" 블럭 처리한 후에 \c을 해 주면 "/* 블럭 내용 */" 으로 주석 처리 된다.
" 여러 줄이라면 각 줄마다 주석이 처리 된다.
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 단축키 설정
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 윈도우 탐색기를 띄워준다.
"map <C-e> :silent !explorer %:p:h:gs?\/?\\\\\\?<CR>
map <C-e> :20vs .<CR><F8>
map <C-l> :TagExplorer<CR>\
" <F2> 새 탭 열고 파일 열기
map <F2> :tabnew<CR>:
map <F5> v]} zf
map <F6> v[{ zf
map <F7> zo
map <F8> w
map <F9> +
map <F10> -
map <F11> <
map <F12> >
" 클립보드 복사, 붙여넣기
map <C-c> "+y
map <C-v> "+P
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" ab 설정
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
ab gtk GtkWidget
ab kern KERN_ALERT
ab false FALSE
ab true TRUE
"ab cpu CPU_IO(
"""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Color
"""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 배경 검정색
set bg=dark
" 색상 밝게 하기
set nocompatible
let colors_name = "classic"
hi clear
hi Normal guifg=white guibg=black
hi SpecialKey guifg=#666666
hi NonText guifg=#666666
hi Directory guifg=#99FFFF
hi ErrorMsg guifg=#FFFFFF guibg=#FF9999
hi IncSearch gui=reverse
hi Search guifg=#000000 guibg=#999933
hi MoreMsg guifg=#99FF99
hi LineNr guifg=#FFFF99
hi Question guifg=#99FF99
hi StatusLine gui=reverse
hi StatusLineNC gui=reverse
hi VertSplit gui=reverse
hi Title guifg=#FF99FF
hi Visual gui=reverse
hi VisualNOS gui=underline
hi WarningMsg guifg=#FF9999
hi WildMenu guifg=#000000 guibg=#999933
hi Folded guifg=#99FFFF guibg=#666666
hi FoldColumn guifg=#99FFFF guibg=#666666
hi DiffAdd guibg=#9999FF
hi DiffChange guibg=#FF99FF
hi DiffDelete term=bold guifg=#9999FF guibg=#99FFFF
hi DiffText term=reverse guibg=#FF9999
hi Comment term=bold guifg=#99FFFF
hi Constant term=underline guifg=#FF99FF
hi Special term=bold guifg=#FF9999
hi Identifier term=underline guifg=#99FFFF
hi Statement term=bold guifg=#FFFF99
hi PreProc term=underline guifg=#9999FF
hi Type term=underline guifg=#99FF99
hi Underlined term=underline gui=underline guifg=#9999FF
hi Ignore guifg=#000000
hi Error term=reverse guifg=#FFFFFF guibg=#FF9999
hi Todo term=standout guifg=#000000 guibg=#999933
"""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Plugins 설정
"""""""""""""""""""""""""""""""""""""""""""""""""""""""
" autocomplpop - 키워드 추천(자동 완성)
" 탭과 엔터로 자동 완성
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 ctermfg=black
hi PmenuSbar ctermbg=blue
" minibufexpllorer - 버퍼 상태 출력 및 이동
" Ctrl + hjkl 을 사용해서 버퍼 메뉴로 이동
" 버퍼메뉴에서 tab 또는 커서 이동으로 해당 파일에서
" enter 입력하면 해당 파일로 이동
" :bn 다음파일로 이동,
" :bp 이전파일로 이동
" :b!숫자 해당숫자 파일로 이동
let g:miniBufExplMapWindowNavVim=1
let g:miniBufExplMapWindowNavArrows=1
let g:miniBufExplMapCTabSwitchBufs=1
let g:miniBufExplModSelTarget=1
코딩 습관
전 코딩할 때 괄호나 따옴표가 있으면 미리 닫고나서 그 내부를 작성합니다. 그래서 ( ) 이 다음에 방향키로 왼쪽으로 이동해야 하죠. 이런 제 습관 때문에 "+Space 조합으로괄호 자동 완성 후 입력모드로 전환" 이라는 것을 설정하였습니다. 이 설정 덕분에 상당히 편하게 코딩할 수 있게 되었죠.
Vim에서 인쇄는?
vimrc 파일을 보시면 알겠지만, 인쇄와 관련하여 몇몇의 설정이 주석으로 처리되어 있습니다. Vim에서 한글을 프린터로 인쇄하려고 노력한 흔적입니다. ㅜㅜ 몇 날 몇 일동안 새벽까지 잠을 안 자면서까지 관련 문서를 뒤져봐도 뾰족한 수가 안 나오네요.
분명 Vim에서는 한국어, 중국어, 일본어를 지원하고 있습니다. 그리고 인쇄에 관해서는 별도로 printmbfcharset와 printencoding 설정을 해주아야 하죠. 그런데 설정을 하고나서 아무것도 없는 빈 백지만 인쇄되는 기이한 현상이 발생하는 것입니다. 이 문제를 해겨하려고 수 십장의 A4 용지와 많은 시간을 허비했죠. 결국은 치솟는 스트레스를 진정시키고 GG 선언했습니다. (어쩌면 나눔고딕코딩 폰트의 문제일지도...)
저 주석은 그걸 잊지 않겠다는 의미로 남겨 두었습니다.
덧붙임
만약 위 인쇄와 관련하여 해결방법을 알고 계신다면 조언을 부탁드립니다. 그리고 쓸만한 플러그인도 추천 부탁드리구요.
내용 원문 출처: . http://hisjournal.net/blog/notice/141
출처: https://pobimoon.tistory.com/entry/vimrc-설정 [쫑환이의 개발노트:티스토리]
728x90
반응형
'프로그램 개발(분석, 설계, 코딩, 배포) > 100. 기타' 카테고리의 다른 글
중국어 공부 - 중국 동영상 사이트(유쿠, 투도우 등)로 중국 영화 보는 방법, 지역 제한 풀기 (0) | 2025.01.30 |
---|---|
Mercury를 이용한 POP3/SMTP 서버 만들기 (0) | 2025.01.22 |
“(알림) XLGantt 오류 유형 및 조치방법”의 55개의 댓글 (0) | 2025.01.18 |
(알림) XLGantt 오류 유형 및 조치방법 (0) | 2025.01.18 |
ubuntu 환경에서 docker 설치하기 (0) | 2025.01.18 |