728x90
반응형
Overview
Vim에 대해서 알아본다.
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
Reference
728x90
반응형
'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 |