본문 바로가기

개발 도구/vim

[ Linux ] VIM 편집기 옵션 설정하기

반응형

.vimrc 파일은 Vim 텍스트 편집기에서 사용자 정의 설정을 저장하는 구성 파일입니다. 이 파일을 통해 Vim의 동작과 모양을 사용자에 맞게 설정할 수 있습니다. .vimrc 파일에 설정할 수 있는 옵션은 매우 다양하며, Vim을 사용하는 방식을 크게 개선할 수 있습니다. 아래는 .vimrc 파일에서 설정할 수 있는 주요 옵션들을 설명합니다.

.vimrc 파일 설정의 주요 범주

  1. 기본 설정
  2. UI 및 편집기 모양
  3. 키 매핑
  4. 자동 명령 (autocommands)
  5. 플러그인 관리
  6. 파일 유형 및 인코딩
  7. 검색 및 치환
  8. 탭 및 들여쓰기
  9. 버퍼, 윈도우, 탭 관리
  10. 문법 강조 및 컬러 스킴

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의 생산성을 크게 향상시킬 수 있습니다.

반응형