이 글에서는 확장된 기능을 가진 에디터 vim을 설치하는 방법을 소개합니다.
vi와 vim의 차이점
vi (Visual Editor)
- 기본 에디터: vi는 Unix 시스템에서 기본으로 제공되는 텍스트 편집기입니다.
- 기능 제한: 기본적인 텍스트 편집 기능만을 제공합니다. 예를 들어, 코드 색상 강조, 자동 완성, 다중 언어 지원 등의 고급 기능이 없습니다.
- 호환성: 다양한 Unix 및 Linux 배포판에서 기본적으로 설치되어 있습니다.
- 작은 크기: 매우 가볍고 시스템 자원을 거의 사용하지 않습니다.
vim (Vi IMproved)
- 확장된 기능: vi에 비해 많은 고급 기능이 추가되었습니다. 예를 들어, 코드 색상 강조, 자동 완성, 매크로, 다중 창 지원 등이 있습니다.
- 플러그인 지원: vim은 다양한 플러그인을 통해 기능을 확장할 수 있습니다. 사용자 정의가 가능하며, 다양한 개발 환경에 맞춰서 사용할 수 있습니다.
- 편의성: vi에 비해 사용자가 좀 더 편리하게 사용할 수 있도록 많은 기능이 추가되어 있습니다. 예를 들어, 실시간 검색 및 치환 기능, 개선된 언어 지원 등이 있습니다.
- 커뮤니티 및 문서: vim은 활발한 커뮤니티가 있으며, 다양한 온라인 문서와 튜토리얼을 통해 배우기 쉽습니다.
- 호환성: 대부분의 Linux 배포판에서 기본적으로 설치되거나 쉽게 설치할 수 있습니다. vi와의 호환성도 유지됩니다.
주요 차이점 요약
- 기능 차이: vim은 vi에 비해 훨씬 많은 기능을 제공하며, 특히 개발자들에게 유용한 기능이 많습니다.
- 사용자 경험: vim은 사용자 친화적인 기능을 많이 제공하여 vi보다 사용하기 편리합니다.
- 확장성: vim은 플러그인을 통해 기능을 확장할 수 있습니다.
- Linux 시스템에서 일반적으로 vim을 설치하고 사용하는 것이 더 유리하며, 특히 프로그래밍이나 고급 텍스트 편집 작업에 매우 유용합니다.
vim 프로그램 설치
다음 명령으로 vim을 설치합니다.(OS설치 시 [소프트웨어] 카테고리의 [소프트웨어 선택(S)]에 따라 이미 설치 되어 있을 수 있습니다.)
[root]# dnf -y install vim-enhanced
많은 사용자가 기본적으로 vi 명령어를 사용하여 텍스트 파일을 편집합니다. 이 경우, vim의 고급 기능을 활용하고자 한다면 매번 vim 명령어를 입력해야 합니다.alias vi=’vim’ 설정을 통해 vi 명령어를 입력하면 자동으로 vim이 실행되도록 함으로써 편의성을 높일 수 있습니다.
다음과 같이 vi명령을 사용하여 마지막 줄에 별칭을 추가합니다.
[root]# vi ~/.bashrc
...중간 생략 ...
alias vi='vim'
변경을 반영하려면 다시 로그인 해야하지만 다음 명령으로 현재 로그인 세션에 변경을 적용할 수 있습니다.
[root]# source ~/.bashrc
UID가 200보다 큰 사용자 계정은 [vim-enhanced] 패키지에 포함된 [/etc/profile.d/vim.sh] 파일에 따라 별칭이 자동으로 적용되므로 다음과 같은 개별 설정이 필요하지 않습니다
vim 설정 커스텀
다음 명령으로 유저 별 vim의 고유 환경 설정을 할 수 있습니다. 모든 유저의 환경을 일괄공통으로 설정하려면 /etc/vimrc파일을 수정합니다.
[root]# vi ~/.vimrc
설정 예
vim 자체 확장 기능 사용 (vi와 호환되지 않음)
set nocompatible
.vimrc 파일에서 한글 파일 인코딩 설정 예제
" 인코딩 설정: 기본 인코딩을 UTF-8로 설정
set encoding=utf-8
" 파일 인코딩 설정: 여러 인코딩을 시도하며 파일을 여는 순서 지정
set fileencodings=utf-8,euc-kr,latin1
" 파일 인코딩과 관련된 추가 설정
set fileencoding=utf-8
" 파일 형식 설정: 줄 바꿈 자동 인식, 자동으로 파일 형식을 감지하고 Unix 형식으로 저장
set fileformats=unix,dos
" 한글 입력 모드 설정 (MacOS의 경우)
" set macmeta
" 클립보드 사용 설정: 시스템 클립보드를 사용하여 복사 및 붙여넣기 가능
set clipboard=unnamedplus
" 기타 편의 설정
set helplang=ko
set termencoding=utf-8
.vimrc 파일에서 백업 설정 예제
" 백업 파일을 생성하도록 설정
set backup
" 백업 파일을 저장할 디렉터리 지정
set backupdir=~/.vim/backups
" 파일을 덮어쓰는 동안 임시 파일을 생성하여 데이터 보호
set writebackup
" 백업 파일의 이름 형식 설정
set backupext=.bak
" 스왑 파일 생성 위치 설정
set directory=~/.vim/swaps
" 백업 파일 유지 기간 설정 (7일)
set backupcopy=yes
" 파일이 열려 있는 동안 스왑 파일을 유지하도록 설정
set swapfile
" 영구적이고 주기적으로 백업을 위해 언두 파일 설정
set undofile
set undodir=~/.vim/undos
" 백업 파일을 사용할지 설정
set noswapfile
" 백업 파일이 생성되는지 확인
set confirm
" 에디터를 닫을 때 백업 파일을 삭제할지 여부 설정
set nobackup
" 임시 파일 생성 위치 설정
set backupskip=/tmp/*,/private/tmp/*
" 백업 파일의 이름 형식을 설정 (기본: ~)
set backupskip=.bak
" 백업 파일을 생성할 때 원본 파일을 삭제하지 않도록 설정
set backupcopy=auto
" 추가적인 보안 설정: 백업 디렉터리와 파일 권한 설정
if !isdirectory($HOME . "/.vim/backups")
call mkdir($HOME . "/.vim/backups", "p", 0700)
endif
if !isdirectory($HOME . "/.vim/swaps")
call mkdir($HOME . "/.vim/swaps", "p", 0700)
endif
if !isdirectory($HOME . "/.vim/undos")
call mkdir($HOME . "/.vim/undos", "p", 0700)
endif
.vimrc 파일에서 검색 설정 예제
" 검색 시 대소문자를 구분하지 않도록 설정
set ignorecase
" 검색 패턴에 대문자가 포함된 경우 대소문자를 구분하도록 설정
set smartcase
" 검색할 때 입력한 패턴에 맞는 첫 번째 항목으로 즉시 이동 (set noincsearch)
set incsearch
" 검색 결과를 강조 표시(set nohlsearch)
set hlsearch
" 현재 검색된 항목의 개수를 상태 줄에 표시
set showmatch
" 검색할 때 화면을 자동으로 스크롤하여 커서 위치를 중앙에 배치
set scrolloff=5
" 매치 항목으로 이동할 때 화면의 중앙에 위치시키는 설정
set cursorline
" 검색할 때 입력한 패턴에 맞는 항목을 상태 줄에 표시
set wildmenu
" 최근 검색 기록을 사용할 수 있도록 설정
set history=1000
" 검색할 때 화면이 다시 그려지지 않도록 설정
set lazyredraw
" 명령행 모드에서 완성된 명령어를 화면에 표시
set showcmd
" 상태줄에 더 많은 정보를 표시
set ruler
" 파일을 열 때 마지막 검색 패턴을 자동으로 지우기
autocmd BufReadPost * let @/=''
" 텍스트 복사 시 시스템 클립보드를 사용하도록 설정
set clipboard=unnamedplus
.vimrc 파일에서 행 번호 설정 예제
" 기본 행 번호를 표시합니다.
set number
" 상대 행 번호를 표시합니다.
set relativenumber
" 행 번호 표시 폭을 5로 설정합니다.
set numberwidth=5
" 현재 행 번호를 강조 표시합니다.
set cursorline
" 행 번호 색상 설정 (기본 테마에서 사용할 경우)
highlight LineNr ctermfg=darkgrey
highlight CursorLineNr ctermfg=yellow
" 특정 파일 유형에 대해 다른 행 번호 설정 적용 예제
autocmd FileType markdown setlocal nonumber norelativenumber
" 비주얼 모드에서 선택한 영역의 시작과 끝에 행 번호 표시
set ruler
" 상태줄에 현재 커서 위치를 표시합니다.
set ruler
" 명령어 모드에서 입력 중인 명령어를 표시합니다.
set showcmd
" 긴 줄을 자동으로 줄바꿈하여 표시합니다.
set wrap
개행($) 이나 탭(^I ) 가시화
set list
괄호 입력 시 대응 괄호 강조
set showmatch
파일 말미에 줄 바꿈 넣지 않기
set binary noeol
자동 들여쓰기 활성화
set autoindent
noautoindent
구문별로 색 구분 표시
syntax on
[ syntax on ]을 하면 코멘트문의 색상을 변경합니다.
highlight Comment ctermfg=LightCyan
syntax off
윈도우창 크기에 맞춰 줄바꿈
set wrap
set now rap
댓글