반응형
.vimrc
파일은 Vim 텍스트 편집기에서 사용자 정의 설정을 저장하는 구성 파일입니다. 이 파일을 통해 Vim의 동작과 모양을 사용자에 맞게 설정할 수 있습니다. .vimrc
파일에 설정할 수 있는 옵션은 매우 다양하며, Vim을 사용하는 방식을 크게 개선할 수 있습니다. 아래는 .vimrc
파일에서 설정할 수 있는 주요 옵션들을 설명합니다.
.vimrc
파일 설정의 주요 범주
- 기본 설정
- UI 및 편집기 모양
- 키 매핑
- 자동 명령 (autocommands)
- 플러그인 관리
- 파일 유형 및 인코딩
- 검색 및 치환
- 탭 및 들여쓰기
- 버퍼, 윈도우, 탭 관리
- 문법 강조 및 컬러 스킴
1. 기본 설정
기본적인 편집기 동작을 설정하는 옵션들입니다.
" Vim의 설정을 영구적으로 저장할 파일을 지정합니다.
set viminfo='20,\"50
" 백업 파일을 생성하지 않도록 설정합니다.
set nobackup
set nowritebackup
" 명령 기록의 개수를 설정합니다.
set history=1000
" 줄 번호를 표시합니다.
set number
" 줄 끝의 공백을 보여줍니다.
set list
" 파일 저장 시 줄 끝의 공백을 제거합니다.
autocmd BufWritePre * :%s/\s\+$//e
" Vim에서 마우스 사용을 허용합니다.
set mouse=a
" Vim의 플러그인 기능을 활성화합니다.
filetype plugin on
2. UI 및 편집기 모양
편집기의 시각적 요소를 조정하는 설정입니다.
" 줄 번호 표시
set number
" 상대 줄 번호 표시
set relativenumber
" 현재 줄 강조
set cursorline
" 현재 컬럼 강조
set cursorcolumn
" 컬러 스킴 설정
colorscheme desert
" 상태줄 설정
set laststatus=2
" 메뉴 표시줄과 도구 모음 제거
set guioptions-=m
set guioptions-=T
" 탭 대신 스페이스 사용
set expandtab
" 자동 줄 바꿈 설정
set wrap
" 상태줄에 커서 위치 표시
set ruler
3. 키 매핑
Vim에서 키 조합을 사용자 정의할 수 있는 설정입니다.
" 저장하고 종료하기
nnoremap <leader>w :w<CR>
nnoremap <leader>q :q<CR>
" 모든 창 저장
nnoremap <leader>W :wa<CR>
" 저장 후 종료
nnoremap <leader>Q :wqa<CR>
" 탐색 모드에서 ESC를 두 번 눌러 저장하고 종료
nnoremap <ESC><ESC> :wq<CR>
" jj를 눌러 일반 모드로 전환
inoremap jj <Esc>
" jkj를 눌러 일반 모드로 전환
inoremap jkj <Esc>
" 이동 키 맵핑 (전통적인 방향키 대신)
nnoremap H ^
nnoremap L $
" 텍스트 복사
vnoremap <leader>y "+y
" 텍스트 붙여넣기
nnoremap <leader>p "+p
4. 자동 명령 (autocommands)
특정 이벤트가 발생할 때 자동으로 실행되는 명령을 설정할 수 있습니다.
" Vim을 시작할 때 특정 파일 열기
autocmd VimEnter * NERDTree
" 파일 저장 시 공백 제거
autocmd BufWritePre * :%s/\s\+$//e
" 특정 파일 형식에 맞는 설정 적용
autocmd FileType python setlocal expandtab shiftwidth=4 softtabstop=4
" 터미널 모드에서 특정 키 매핑 비활성화
autocmd TermOpen * nnoremap <buffer> <Esc> :q<CR>
" Markdown 파일에 맞는 설정
autocmd FileType markdown setlocal spell spelllang=en_us
5. 플러그인 관리
Vim 플러그인을 관리하는 방법입니다. 여기서는 예제로 vim-plug
를 사용합니다.
" vim-plug 플러그인 관리 도구 설치 (Vim 시작 시 한 번 실행)
call plug#begin('~/.vim/plugged')
" 플러그인 목록
Plug 'scrooloose/nerdtree'
Plug 'tpope/vim-fugitive'
Plug 'junegunn/fzf'
Plug 'junegunn/fzf.vim'
" 플러그인 설정 끝
call plug#end()
" NERDTree 단축키 설정
nnoremap <C-n> :NERDTreeToggle<CR>
" fzf 검색 단축키 설정
nnoremap <leader>f :Files<CR>
6. 파일 유형 및 인코딩
파일의 유형과 인코딩을 설정하는 방법입니다.
" 파일 인코딩 설정
set encoding=utf-8
set fileencoding=utf-8
" 파일 형식 자동 감지
filetype on
filetype plugin on
filetype indent on
" 파일 형식에 따라 특정 설정 적용
autocmd FileType python setlocal tabstop=4 shiftwidth=4 expandtab
" 끝없는 줄을 허용하지 않음
set binary noeol
" 새로운 파일을 열 때 대화형 파일 선택
set wildmenu
7. 검색 및 치환
텍스트 검색 및 치환과 관련된 설정입니다.
" 대소문자를 구분하지 않는 검색
set ignorecase
" 대문자가 포함된 검색어에 대해 대소문자 구분
set smartcase
" 실시간 검색 결과 표시
set incsearch
" 검색 결과를 강조 표시
set hlsearch
" 검색 결과 강조 표시 지우기
nnoremap <leader><space> :nohlsearch<CR>
8. 탭 및 들여쓰기
탭과 들여쓰기를 조정하는 설정입니다.
" 탭 대신 스페이스 사용
set expandtab
" 탭 폭 설정
set tabstop=4
" 자동 들여쓰기 설정
set shiftwidth=4
" 새로운 줄에 자동 들여쓰기
set autoindent
" 스마트 들여쓰기
set smartindent
" 백스페이스가 작동하는 범위 설정
set backspace=indent,eol,start
9. 버퍼, 윈도우, 탭 관리
버퍼와 윈도우, 탭을 관리하는 설정입니다.
" 숨겨진 버퍼 사용 허용
set hidden
" 버퍼 목록 표시
set wildmenu
" 버퍼 전환 시 상태 표시줄에 파일 정보 표시
set showtabline=2
" 탭 간에 전환
nnoremap <leader>1 1gt
nnoremap <leader>2 2gt
nnoremap <leader>3 3gt
nnoremap <leader>4 4gt
" 창 분할
nnoremap <C-w>s :split<CR>
nnoremap <C-w>v :vsplit<CR>
" 창 간에 쉽게 이동
nnoremap <C-h> <C-w>h
nnoremap <C-j> <C-w>j
nnoremap <C-k> <C-w>k
nnoremap <C-l> <C-w>l
10. 문법 강조 및 컬러 스킴
문법 강조와 색상 테마를 설정하는 방법입니다.
" 문법 강조 활성화
syntax on
" 컬러 스킴 설정
colorscheme desert
" 배경 설정
set background=dark
" 사용자 정의 색상
highlight Comment ctermfg=LightBlue
" 검색 결과 색상
highlight Search ctermfg=White ctermbg=DarkBlue
추가 유용한 설정
Vim의 사용성을 향상시키기 위한 다양한 추가 설정들입니다.
" 야간 모드 설정
set background=dark
" 자동 저장
set autowrite
" 비쥬얼 라인 모드로 이동
set whichwrap=b,s,<,>,[,]
" 창 제목 표시
set title
" 자동 완성
set completeopt=menuone,noselect
" 인식할 파일 확장자 설정
autocmd BufNewFile,BufRead *.md,*.markdown set filetype=markdown
" 백스페이스 설정
set backspace=indent,eol,start
" 복사 및 붙여넣기 설정
set clipboard=unnamedplus
" 명령어 자동 완성
set wildmenu
.vimrc
파일 구성 예시
모든 설정을 포함하는 예시 .vimrc
파일입니다.
" 기본 설정
set number
set relativenumber
set cursorline
set cursorcolumn
set mouse=a
set wildmenu
" UI 및 편집기 모양
syntax on
colorscheme desert
set background=dark
set laststatus=2
" 키 매핑
nnoremap <leader
>w :w<CR>
nnoremap <leader>q :q<CR>
nnoremap <leader>W :wa<CR>
nnoremap <leader>Q :wqa<CR>
inoremap jj <Esc>
" 자동 명령
autocmd BufWritePre * :%s/\s\+$//e
autocmd FileType python setlocal expandtab shiftwidth=4 softtabstop=4
autocmd TermOpen * nnoremap <buffer> <Esc> :q<CR>
" 플러그인 관리
call plug#begin('~/.vim/plugged')
Plug 'scrooloose/nerdtree'
Plug 'tpope/vim-fugitive'
Plug 'junegunn/fzf'
Plug 'junegunn/fzf.vim'
call plug#end()
" NERDTree 단축키 설정
nnoremap <C-n> :NERDTreeToggle<CR>
" 파일 유형 및 인코딩
set encoding=utf-8
set fileencoding=utf-8
filetype on
filetype plugin on
filetype indent on
" 검색 및 치환
set ignorecase
set smartcase
set incsearch
set hlsearch
nnoremap <leader><space> :nohlsearch<CR>
" 탭 및 들여쓰기
set expandtab
set tabstop=4
set shiftwidth=4
set autoindent
set smartindent
" 버퍼, 윈도우, 탭 관리
set hidden
set showtabline=2
nnoremap <leader>1 1gt
nnoremap <leader>2 2gt
nnoremap <leader>3 3gt
nnoremap <leader>4 4gt
nnoremap <C-w>s :split<CR>
nnoremap <C-w>v :vsplit<CR>
nnoremap <C-h> <C-w>h
nnoremap <C-j> <C-w>j
nnoremap <C-k> <C-w>k
nnoremap <C-l> <C-w>l
이 예시를 기반으로, 자신의 사용 패턴에 맞게 .vimrc
파일을 조정할 수 있습니다. .vimrc
파일을 잘 구성하면 Vim의 생산성을 크게 향상시킬 수 있습니다.
반응형
'개발 도구 > vim' 카테고리의 다른 글
[ vim ] tab을 space로 변경하기 (expandtab, shiftwidth, tabstop) (0) | 2024.09.05 |
---|