๋ฆฌ๋ ์ค์์ Vim์ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ๋ ค๋ฉด .vimrc ๊ณ ๊ธ ์ค์ ์ด ํ์์ ๋๋ค. ์๋ ์ค ๋ฒํธ, ์ค๋งํธ ๊ฒ์, netrw ๊ฐ์ , ์๋์์ฑ, ์ปค์ ๋ณต์ ๋ฑ ์ค๋ฌด ๊ฐ๋ฐ์๊ฐ ์ฆ์ ์ฌ์ฉํ ์ ์๋ ๊ณ ๊ธ Vim ์ค์ ์ ์ ๋ฆฌํฉ๋๋ค.
๋ฆฌ๋
์ค์์ Vim์ ์ค๋ ์ฐ๋ค ๋ณด๋ฉด ๋๊ตฌ๋ ํ ๋ฒ์ฏค “๊ธฐ๋ณธ ์ค์ ์ ํ๊ณ”๋ฅผ ๋ง์ฃผํ๊ฒ ๋ฉ๋๋ค.
์ ๋ ์๋ฒ ๋๋ ๋ณด๋์์ C ์ฝ๋ ๋๋ฒ๊น
ํ ๋, ๊ธฐ๋ณธ Vim๋ง์ผ๋ก๋ ์ด๋๋ ๋ต๋ตํ๊ณ ๊ฒ์๋ ๋ถํธํด์ ์
๋ฌด ์๋๊ฐ ๋์ ๋๊ฒ ๋จ์ด์ก์ต๋๋ค.
๊ทธ๋๋ถํฐ .vimrc๋ฅผ ํ๋์ฉ ์๋ณด๋ฉด์ ์ ๊ฐ๋ฐ ํ๊ฒฝ์ ๋ง๋ค์ด ์๋๋ฐ, ์ง๊ธ ์๊ฐํ ์ค์ ์ ์ค์ ๋ก ์๋
๊ฐ ์ค๋ฌด์์ ๊ฒ์ฆ๋ ๊ตฌ์ฑ์
๋๋ค.
1. ์ .vimrc ๊ณ ๊ธ ์ค์ ์ด ๊ฐ๋ฐ ์์ฐ์ฑ์ ํต์ฌ์ธ๊ฐ?
Vim์ ๋จ์ํ ํธ์ง๊ธฐ๊ฐ ์๋๋ผ, ๊ฐ๋ฐ์์ ๋๊ณผ ์์ด ๊ฐ์ฅ ๋ง์ด ๋ฟ๋ “์ฃผ๋ ฅ ๋๊ตฌ”์
๋๋ค.
ํนํ GUI ์ฌ์ฉ์ด ์ฝ์ง ์์ ์๋ฒ/์๋ฒ ๋๋ ํ๊ฒฝ์์๋ Vim์ด ์ฌ์ค์ IDE ์ญํ ์ ํ์ฃ .
๊ธฐ๋ณธ Vim์ ๋ค์๊ณผ ๊ฐ์ ๋ถํธ์ด ์์ต๋๋ค:
- ์ ๋ ์ค ๋ฒํธ๋ง ๋ณด์ฌ์ ์ด๋์ด ๋๋ฆผ
- ๊ฒ์ ๊ฒฐ๊ณผ๊ฐ ์ ๋ณด์ด์ง ์์ ์ฝ๋๋ฅผ ์ฌ๋ฌ ๋ฒ ์ค์บํ๊ฒ ๋จ
- ๊ดํธ ๋งค์นญ ์ฝํจ → ์ค์ฒฉ ๊ตฌ์กฐ ํ์ ์ด๋ ค์
- ์๋์์ฑ UI ๋ถ์์
- netrw ๊ธฐ๋ณธ ๋ชจ๋๊ฐ ๋๋ฌด ๋ถ์น์ ํจ
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ฃผ๋ ๊ฒ์ด ๊ณ ๊ธ .vimrc ์ค์ ์
๋๋ค.
์ ์ญ์ ์ด ์ค์ ๋ค์ ์ ์ฉํ ํ๋ถํฐ ์ฝ๋ ํ์ ์๋์ ํธ์ง ์๋๊ฐ ํฌ๊ฒ ๋ฌ๋ผ์ก์ต๋๋ค.
2. ์ค๋ฌด์์ ์ฌ์ฉํ๋ ๊ณ ๊ธ .vimrc ์ ์ฒด ์์
์๋๋ ์ ๊ฐ ์๋ฒ ๋๋·๋คํธ์ํฌ ๊ฐ๋ฐ ํ๊ฒฝ์์ ์ค์ ๋ก ์ฌ์ฉํ๊ณ ์๋ .vimrc ์ค์ ์
๋๋ค.
์์ฒ ์ค์ง๋ฆฌ C ์ฝ๋์, ์ปค๋ ๋ก๊ทธ ๋ถ์, OpenWrt ํ๊ฒฝ์์์ ์ ์์
๊น์ง ๋ชจ๋ ๊ณ ๋ คํด ๋ง๋ ๊ตฌ์ฑ์
๋๋ค.
์คํฌ๋ฆฐ์ท์์ ๋ณด์ด๋ ์ค์ ์ ๋จ์ ํธ์ ๊ธฐ๋ฅ์ ๋์ด์ ๊ฐ๋ฐ ํ๋ฆ ์ ์ฒด๋ฅผ ์ต์ ํํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ๊ณ ์์ต๋๋ค.
๊ฐ ์ค์ ์ ๋ค์๊ณผ ๊ฐ์ ์ค์ฌ์ฉ ๋ชฉ์ ์ ๋ด๊ณ ์์ต๋๋ค.

์๋์ ์ ๊ณตํ๋ .vimrc ๊ตฌ์ฑ์ ์ ๊ฐ ์ค๋ฌด์์ ์ค์ ๋ก ์ฌ์ฉํ๊ณ ์๋ ์ค์ ์
๋๋ค.
๊ทธ๋๋ก ๋ณต์ฌํด์ ์ฐ์
๋ ๋ฌธ์ ์๋๋ก ์์ ์ฑ ์ค์ฌ์ผ๋ก ๊ตฌ์ฑํด๋์๊ณ ,
ํนํ SSH·์๋ฒ·์๋ฒ ๋๋ ํ๊ฒฝ์์๋ ๋์ผํ๊ฒ ๋์ํฉ๋๋ค.
ํ์ํ์๋ฉด ์ ์ฒด ์ฝ๋๋ฅผ ํต์งธ๋ก ๋ณต์ฌํ์ฌ ~/.vimrc์ ๋ถ์ฌ ๋ฃ์ด ๋ฐ๋ก ์ฌ์ฉํ์ ๋ ๋ฉ๋๋ค.
"=====================================================
" ADVANCED VIM CONFIGURATION (๊ฐ๋ฐ์์ฉ ์ฌํ ์ธํ
)
"=====================================================
"-----------------------------
" ๊ธฐ๋ณธ ํ์ / ํธ์ง ์ค์
"-----------------------------
set number
set relativenumber
set cursorline
set showmatch
set nowrap
set ruler
set showcmd
set laststatus=2
set title
"-----------------------------
" ๋ค์ฌ์ฐ๊ธฐ ๋ฐ ํญ ๊ด๋ จ
"-----------------------------
set autoindent
set smartindent
set tabstop=4
set shiftwidth=4
set softtabstop=4
set expandtab
"-----------------------------
" ๊ฒ์ ๊ด๋ จ
"-----------------------------
set ignorecase
set smartcase
set hlsearch
set incsearch
"-----------------------------
" ํ์ผ / ๋ฐฑ์
๊ด๋ จ
"-----------------------------
set nobackup
set nowritebackup
set noswapfile
set fileencodings=utf-8,euc-kr
set encoding=utf-8
"-----------------------------
" ์์ / ํ๋ฉด ํ์
"-----------------------------
syntax on
set background=dark
set termguicolors
highlight LineNr ctermfg=DarkGrey
highlight CursorLine ctermbg=235
highlight MatchParen cterm=bold ctermbg=238 ctermfg=yellow
"-----------------------------
" ํ์ / ๋จ์ถํค
"-----------------------------
nnoremap <Space> :nohlsearch<CR>
nnoremap <C-s> :w<CR>
nnoremap <C-q> :q<CR>
nnoremap <C-a> ggVG
nnoremap <C-l> zz
"-----------------------------
" Netrw ๊ฐ์
"-----------------------------
let g:netrw_banner = 0
let g:netrw_liststyle = 3
let g:netrw_browse_split = 4
let g:netrw_winsize = 20
"-----------------------------
" ์๋์์ฑ / ๋ฉ๋ด ๊ฐ์
"-----------------------------
set history=1000
set wildmenu
set wildmode=longest,list,full
set completeopt=menu,menuone,noselect
"-----------------------------
" ์ปค์ ์์น ๋ณต์
"-----------------------------
au BufReadPost *
\ if line("'\"") > 0 && line("'\"") <= line("$") |
\ exe "norm g`\"" |
\ endif
3. ์ค๋ฌด์์ ํนํ ๋์๋๋ ํต์ฌ ๊ธฐ๋ฅ ์ ๋ฆฌ
์๋๋ ๋จ์ ๊ธฐ๋ฅ ์ค๋ช ์ด ์๋๋ผ, ์ค์ ๋ก ์ฌ์ฉํ๋ฉด์ ์ฒด๊ฐํ ํจ๊ณผ ์ค์ฌ์ผ๋ก ์ ๋ฆฌํ์ต๋๋ค.
1) ์๋ ์ค ๋ฒํธ(set relativenumber)
set relativenumber
3 if (...)
2 for (...)
1 while (...)
0 return

ํ๋ก์ ํธ ์ด๊ธฐ์ ์ด ๊ธฐ๋ฅ์ ๋ชฐ๋์ ๋๋,
10j, 15k ๊ฐ์ ์ด๋ ๋ช
๋ น์ ์์ฃผ ์ฐ๋ฉด์๋ ๋ช ์ค ์๋์ธ์ง ํญ์ ๋์ผ๋ก ์ธ์ด์ผ ํ์ต๋๋ค.
relative number๋ฅผ ์ผ๋ฉด ์ซ์๊ฐ “๊ฑฐ๋ฆฌ”์ฒ๋ผ ๋ณด์ด๊ธฐ ๋๋ฌธ์ ์ด๋์ด ํจ์ฌ ์ง๊ด์ ์
๋๋ค.
2) ์ค๋งํธ ๊ฒ์(smartcase + hlsearch)
set ignorecase
set smartcase
set hlsearch
set incsearch
์ด ๊ธฐ๋ฅ์ “grep ์์ด ๋น ๋ฅด๊ฒ ์ฝ๋ ์ฝ๊ธฐ”์ ์์ฒญ ์ ์ฉํฉ๋๋ค.
- ์๋ฌธ์ ๊ฒ์ → ๋์๋ฌธ์ ๋ฌด์
- ๋๋ฌธ์ ํฌํจ ๊ฒ์ → ์ ํ ๋งค์นญ
- ๊ฒ์ ์ ์ผ์น ๋ถ๋ถ ์๋ ํ์ด๋ผ์ดํธ
- / ์ ๋ ฅ ์ค์๋ ์ค์๊ฐ ๊ฒ์
Python ๋ก๊ทธ, C ์ฝ๋ ๋ถ์, Shell ์คํฌ๋ฆฝํธ ๋๋ฒ๊น ํ ๋ ๊ฒ์์ด ์์ฐ์ค๋ฝ๊ฒ ํ๋ฆ ๋๋ค.
3) cursorline + ๋งค์นญ ๊ดํธ + ์์ ๊ฐ์
set cursorline
set showmatch
highlight CursorLine ctermbg=235
highlight MatchParen cterm=bold ctermbg=238 ctermfg=yellow

ํนํ ์๋ฒ ๋๋ ํ๋ก์ ํธ์ฒ๋ผ if, while, callback์ด ์ฝํ ๊ตฌ์กฐ๋ฅผ ๋ณผ ๋
ํ์ฌ ์์น์ ํ๋ฆ์ ๋ฐ๋ผ๊ฐ๊ธฐ ์ฌ์์ง๋๋ค.
4) ๋จ์ถํค ๋งคํ(nnoremap)
nnoremap <Space> :nohlsearch<CR>
nnoremap <C-s> :w<CR>
nnoremap <C-q> :q<CR>
GUI IDE์ฒ๋ผ ๋์ํ๋ ๊ธฐ๋ฅ์ด Vim์์๋ ๊ฐ๋ฅํฉ๋๋ค.
- Space → ๊ฒ์ ํ์ด๋ผ์ดํธ ์ ๊ฑฐ
- Ctrl+S → ์ ์ฅ
- Ctrl+Q → ์ข ๋ฃ
์ ๋ ๊ฐ์ธ์ ์ผ๋ก <Space>๋ก ํ์ด๋ผ์ดํธ ์ ๊ฑฐํ๋ ๊ธฐ๋ฅ์ ๊ฐ์ฅ ์์ฃผ ์๋๋ค.
ํนํ /error ๊ฐ์ ๊ฒ์ ํ ํ๋ฉด์ด ๋ฒ์ฉ๊ฑฐ๋ฆด ๋ ๋ฐ๋ก ๋ฆฌ์ ํ ์ ์์ด์ ํธํฉ๋๋ค.
5) netrw ํ์ผ ํ์๊ธฐ ๊ฐ์
Vim ๊ธฐ๋ณธ ๋ด์ฅ ํ์๊ธฐ netrw๋ ๊ธฐ๋ณธ๊ฐ์ด ๋ถํธํฉ๋๋ค.
์๋ ์ค์ ์ผ๋ก ์์ ํ ๋ค๋ฅธ ์ฌ์ฉ์ ๊ฒฝํ์ด ๋ฉ๋๋ค.
let g:netrw_banner = 0
let g:netrw_liststyle = 3
let g:netrw_winsize = 20
ํ์ผ ๊ด๋ฆฌ๊ฐ ํจ์ฌ ์ฌ์์ง๋๋ค.
6) ์๋์์ฑ UI ๊ฐ์
set wildmenu
set wildmode=longest,list,full
set completeopt=menu,menuone,noselect
completeopt์ wildmenu ์ค์ ์ “์์ Vim ์๋์์ฑ”์ ์์ฑํ์ ๊ฐ๊น์ต๋๋ค.
ํญ์ ๋๋ ์ ๋ ๋ฉ๋ด๊ฐ ๊น๋ํ๊ฒ ์ด๋ฆฌ๊ณ ,
์์น ์๋ ์๋ ์ ํ์ ํ์ง ์์ ์คํ๋ ์ค์์ต๋๋ค.
7) ๋ง์ง๋ง ์ปค์ ์์น ๋ณต์
์์ฒ ์ค์ง๋ฆฌ C ํ์ผ์์ ํนํ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ ๋๋ค.
au BufReadPost *
\ if line("'\"") > 0 && line("'\"") <= line("$") |
\ exe "norm g`\"" |
\ endif
์๋ฒ ๋๋ ๋ก๊ทธ ํ์ผ์ด๋ ๋๋ผ์ด๋ฒ ์ฝ๋๋ฅผ ์ด ๋ ๋งค์ฐ ์ ์ฉํ์ต๋๋ค.
๋ค์ ์ด๋ฉด ์ด์ ๋ณด๋ ์์น๋ก ๋ฐ๋ก ์ด๋ํ๋,
“์ฌ๊ธฐ ์ด๋๊น์ง ๋ดค๋๋ผ?” ์ฐพ์ ํ์๊ฐ ์์ต๋๋ค.
4. FAQ – .vimrc ๊ณ ๊ธ ์ค์ ๊ด๋ จ ์ง๋ฌธ
Q1. ์ค์ ์ด ์ ์ฉ๋์ง ์์ต๋๋ค.
A. ๊ฐ์ฅ ๋จ์ํ ์์ธ์ .vimrc๋ฅผ ์ ์ฅ๋ง ํ๊ณ ๋ค์ ์ฝ์ง ์์ ๊ฒฝ์ฐ์
๋๋ค.
์๋ ๋ช
๋ น์ผ๋ก ์ฆ์ ์ฌ์ ์ฉ๋ฉ๋๋ค.
:source ~/.vimrc
Q2. netrw๊ฐ ์ด์ํ๊ฒ ๋ณด์ด๋ฉด?
A. ํฐ๋ฏธ๋ ํฌ๊ธฐ·ํฐํธ๋ง๋ค ๋ค๋ฅด๊ฒ ๋ณด์ผ ์ ์์ต๋๋ค.
g:netrw_winsize ๊ฐ์ ์กฐ๊ธ ๋ฐ๊ฟ๋ณด์ธ์.
Q3. Ctrl+S๊ฐ ์ ์ฅ์ด ์ ๋ฉ๋๋ค.
A. ํฐ๋ฏธ๋ ์์ฒด ๋จ์ถํค๊ฐ ๋จน๊ณ ์์ ์ ์์ต๋๋ค.
.bashrc์์ stty ์ค์ ์ ํ์ธํ์ธ์.
Q4. ์์์ด ๊นจ์ ธ ๋ณด์ ๋๋ค.
A.
set termguicolors
๊ฐ ๊ฐ๋ฅํ๋ ค๋ฉด 256color ํฐ๋ฏธ๋์ด์ด์ผ ํฉ๋๋ค.
Q5. ์ปค์ ์์น ๋ณต์์ด ์ ๋ฉ๋๋ค.
A. ํ์ผ์ด ๋๋ฌด ์๊ฑฐ๋, ์ด์ ์ข ๋ฃ ์ ์์น ์ ๋ณด๊ฐ ์ ์ฅ๋์ง ์์์ ์ ์์ต๋๋ค.
5. .vimrc ๊ณ ๊ธ ์ค์ ์ด ๊ฐ๋ฐ ํ๋ฆ์ ์ฃผ๋ ์ค์ง์ ํจ๊ณผ
.vimrc ๊ณ ๊ธ ์ค์ ์ ๋จ์ํ ํธ์ง๊ธฐ๋ฅผ ๊พธ๋ฏธ๋ ์์ค์ด ์๋๋ผ
๊ฐ๋ฐ์๊ฐ ๋งค์ผ ๋ฐ๋ณตํ๋ ์์
์ ๊ตฌ์กฐ๋ฅผ ๋ฐ๊ฟ์ฃผ๋ ํต์ฌ ์์์
๋๋ค.
์๋ ์ค ๋ฒํธ๋ฅผ ํตํ ๋น ๋ฅธ ์ด๋, ์ค๋งํธ ๊ฒ์์ ํ์ฉํ ์ฝ๋ ๋ถ์,
๊ดํธ ๋งค์นญ๊ณผ cursorline์ ์ํ ๊ฐ๋
์ฑ ํฅ์,
๊ทธ๋ฆฌ๊ณ netrw ๊ฐ์ ๊ณผ ์๋์์ฑ ์ต์
์ ์ค์ ๊ฐ๋ฐ ํ์ฅ์์ ์ฆ๊ฐ์ ์ธ ํจ์จ ์ฐจ์ด๋ฅผ ๋ง๋ญ๋๋ค.
ํนํ ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ์ง ์๋ ์์ Vim ํ๊ฒฝ์์๋
์ฌํ ์ค์ ๋ง์ผ๋ก ๊ฐ๋ฐ ์ง์ค๋๊ฐ ์์นํ๊ณ ,
๋์ฉ๋ ์ฝ๋ ํธ์ง์ด๋ ์๋ฒ ๋๋ ๋ก๊ทธ ๋ถ์์์๋
์์
ํ๋ฆ์ด ๋ถ๋๋ฝ๊ฒ ์ด์ด์ง๋ ์ฅ์ ์ด ์์ต๋๋ค.
ํจ์จ์ ์ธ ์ฝ๋ฉ ํ๊ฒฝ์ ๋๊ตฌ์ ์ ํ๋ณด๋ค
๋๊ตฌ๋ฅผ ์ด๋ป๊ฒ ์ค์ ํ๋๋์์ ์์๋ฉ๋๋ค.
๊ณ ๊ธ .vimrc ๊ตฌ์ฑ์ ๊ฐ๋ฐ์์ ์๊ฐ์ ์งํค๋ ๊ฐ์ฅ ํ์คํ ๋ฐฉ๋ฒ์ ๋๋ค.
์ด์ ๊ธ ๋ณด๊ธฐ
[Linux] .vimrc ์ค์ ์ผ๋ก ๊ฐ๋ฐ ํ๊ฒฝ ์ต์ ํํ๊ธฐ โ๏ธ๋ค์๊ธ ๋ณด๊ธฐ
[Linux] Vim์์ ctags๋ก ์ฝ๋ ํ์ ์์ ์ ๋ณต ๐'๊ฐ๋ฐ๋ ธํธ > Linux' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Linux] grep์ผ๋ก ์ฝ๋ ๋ด์ฉ ๊ฒ์ ์์ ์ ๋ณต ๐ก (0) | 2025.11.11 |
|---|---|
| [Linux] Vim์์ ctags๋ก ์ฝ๋ ํ์ ์์ ์ ๋ณต ๐ (0) | 2025.11.10 |
| [Linux] .vimrc ์ค์ ์ผ๋ก ๊ฐ๋ฐ ํ๊ฒฝ ์ต์ ํํ๊ธฐ โ๏ธ (0) | 2025.11.08 |
| [Linux] .bashrc๋ก ํ๋ก์ ํธ๋ณ ํ๊ฒฝ ์๋ ์ค์ ํ๊ธฐ โ๏ธ (0) | 2025.11.07 |
| [Linux] ๋๋ง์ .bashrc ์ค์ ์ผ๋ก ํฐ๋ฏธ๋ ์์ ์ ๋ณต ๐ป (0) | 2025.11.06 |