Overview
이 글에서는 강력한 텍스트 에디터인 Vim에 대해 자세히 알아본다.
Vim은 Vi 에디터를 기반으로 하며, 모드 기반 편집, 강력한 키보드 명령어, 유연한 플러그인 확장성, .vimrc 설정을 통한 커스터마이징 등을 통해 다양한 개발 환경에서 널리 사용된다.
Vim의 모드 구조(Normal, Insert, Visual, Command-line)를 이해하고, 단축키 조합 및 플러그인 활용법,
실전에서 자주 쓰이는 `.vimrc` 설정 예시 등을 함께 소개함으로써 입문자부터 중급 사용자까지 Vim을 더욱 효율적으로 사용할 수 있도록 돕는 것이 이 글의 목적이다.
📅 관련 글
2024.05.07 - [Linux] - Vim 개념 및 사용가이드
2024.05.08 - [유용한 IT Tool] - VSCode Vim Extension 사용 가이드
Vim 이란?
Vim(Vi Improved)는 Vi 에디터를 기반으로 개발된 고성능 텍스트 에디터이다. 다양한 프로그래밍 언어를 지원하며 커스터마이징이 가능한 플러그인 시스템을 갖추고 있다.
Vim 주요특징
- 모드 기반 편집: Normal, Insert, Visual, Command-line 모드를 통해 다양한 편집 기능 제공
- 커스터마이징: .vimrc 설정 파일을 사용해 커스터마이징 가능
- 확장성: 다양한 플러그인을 통한 기능 확장
Vim 주요모드
- Normal Mode (기본 모드)
- 키 입력을 통해 커서 이동, 텍스트 삭제/복사 등의 편집 작업 수행
- Insert Mode
- 키보드 입력을 통해 텍스트를 직접 편집
- `i`, `a`, `o` 등의 키로 진입
- Visual Mode
- 범위 선택을 위한 모드로, 선택된 텍스트에 대해 복사/삭제/변경 등의 작업 가능
- `v` 로 진입하여 문자 단위, `V` 로 줄 단위, `Ctrl-v` 로 블록 단위 선택
- Command-line Mode
- 명령을 입력하여 파일 저장, 검색 및 치환 등의 작업 수행
- Normal 모드에서 `:` 로 진입
Vim 주요 단축키
1. Normal Mode 단축키
- 커서 이동
- `h`: 왼쪽으로 이동
- `j`: 아래로 이동
- `k`: 위로 이동
- `l`: 오른쪽으로 이동
- 단어 단위 이동
- `w`: 다음 단어의 시작으로 이동
- `e`: 현재 또는 다음 단어의 끝으로 이동
- `b`: 이전 단어의 시작으로 이동
- 줄 이동
- `0`: 현재 줄의 시작으로 이동
- `$`: 현재 줄의 끝으로 이동
- `gg`: 파일의 처음으로 이동
- `G`: 파일의 끝으로 이동
- 편집
- `x`: 현재 커서 위치의 문자 삭제
- `dd`: 현재 줄 삭제
- `yy`: 현재 줄 복사
- `p`: 복사/삭제한 텍스트 붙여넣기
- `u`: 마지막 편집 작업 취소
- `Ctrl-r`: 마지막 취소 작업 복구
- 특정 줄로 이동
- `:숫자`: 특정 줄로 이동 ( `:42` 는 42번째 줄로 이동)
2. Insert Mode 단축키
- 모드 진입
- `i`: 커서 앞에서 입력 시작
- `I`: 줄의 시작에서 입력 시작
- `a`: 커서 뒤에서 입력 시작
- `A`: 줄의 끝에서 입력 시작
- `o`: 현재 줄 아래에 새 줄을 추가하고 입력 시작
- `O`: 현재 줄 위에 새 줄을 추가하고 입력 시작
- 입력 중 단축키
- `Esc`: Normal 모드로 돌아가기
- `Ctrl-w`: 한 단어 삭제
- `Ctrl-u`: 커서 앞의 모든 텍스트 삭제
3. Visual Mode 단축키
- 모드 진입
- `v`: 문자 단위 선택
- `V`: 줄 단위 선택
- `Ctrl-v`: 블록 단위 선택
- 편집
- `y`: 선택된 영역 복사
- `d`: 선택된 영역 삭제
- `~`: 선택된 영역 대소문자 변환
4. Command-line Mode 단축키
- 파일 관리
- `:w`: 현재 파일 저장
- `:q`: 파일 종료
- `:wq`: 저장하고 종료
- `:q!`: 저장하지 않고 종료
- 검색 및 치환
- `/`: 문자열 검색
- `n`: 다음 검색 결과로 이동
- `N`: 이전 검색 결과로 이동
- `:%s/찾을단어/바꿀단어/g`: 파일 전체에서 단어 치환
5. Normal Mode에서 조합 키 활용
- 여러 줄 작업
- `2yy`: 현재 줄부터 다음 줄까지 2줄 복사
- `3dd`: 현재 줄부터 3줄 삭제
- `5p`: 복사하거나 삭제한 내용을 5번 붙여넣기
- 반복 작업
- `.`: 마지막으로 수행한 편집 작업을 반복 수행
- 특정 개수로 이동 및 편집
- `3w`: 3번째 다음 단어의 시작으로 이동
- `2b`: 2번째 이전 단어의 시작으로 이동
- `4x`: 현재 커서 위치부터 4글자 삭제
- `10G`: 10번째 줄로 이동
6. Plugin 및 고급 기능 활용
플러그인 설치 예시 (Vim-Plug)
vimCopy code
call plug#begin('~/.vim/plugged')
Plug 'tpope/vim-fugitive' " Git integration
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } } " Fuzzy Finder
Plug 'airblade/vim-gitgutter' " Git Gutter for sign column
call plug#end()
플러그인 활용 단축키
- `:G`: Git 명령어 실행 (vim-fugitive)
- `:Gwrite`: Git에 현재 파일 추가 및 수정 (vim-fugitive)
- `:FZF`: 파일 이름을 통해 Fuzzy Finder로 파일 찾기 (fzf)
Vim에서 유용한 설정 예시 (.vimrc)
" 줄 번호 표시
set number
" 탭 대신 스페이스 4개 사용
set expandtab
set tabstop=4
set shiftwidth=4
" 문법 강조
syntax on
" 검색 결과 강조
set hlsearch
" 검색 중 입력한 문자열에 따라 실시간 매칭
set incsearch
" 커서가 화면 경계에 도달해도 계속 스크롤 가능
set scrolloff=8
" 파일 변경 시 자동으로 다시 읽어오기
set autoread
" 백업 파일 생성 방지
set nobackup
set nowritebackup
마무리
Vim은 단순한 에디터를 넘어서서, 개발자의 작업 흐름을 혁신적으로 바꿔주는 도구다.
처음 접할 때는 진입 장벽이 다소 높게 느껴질 수 있지만, 모드 기반 편집 방식과 반복 명령,
수많은 커스터마이징 옵션 등을 익히고 나면 오히려 다른 에디터로 돌아가기 어려울 정도로 빠르고 효율적인 개발 환경을 제공한다.
이 글을 통해 Vim의 기본 개념부터 고급 활용법, 플러그인 설치 및 설정까지 폭넓게 이해하고 직접 사용해 보자.
그리고 익숙해질수록 자연스럽게 “Vim이 가진 진정한 생산성”을 경험하게 될 것이다.
Reference
'Linux' 카테고리의 다른 글
리눅스 Swap 메모리란? (0) | 2024.11.19 |
---|---|
리눅스 커널이란?(Linux Kernel) (2) | 2024.11.12 |
리눅스 명령어 3. sed, awk란? (0) | 2024.01.20 |
리눅스 명령어 2. jq란? (2) | 2024.01.19 |
리눅스 명령어 1. xargs란? (0) | 2024.01.16 |