Linux

Vim 개념 및 사용가이드

Somaz 2024. 5. 14. 17:31
728x90
반응형

Overview

Vim에 대해서 알아본다.

 


Vim 이란?

Vim(Vi Improved)는 Vi 에디터를 기반으로 개발된 고성능 텍스트 에디터이다. 다양한 프로그래밍 언어를 지원하며 커스터마이징이 가능한 플러그인 시스템을 갖추고 있다.

 

 


 

Vim 주요특징

  • 모드 기반 편집: Normal, Insert, Visual, Command-line 모드를 통해 다양한 편집 기능 제공
  • 커스터마이징: .vimrc 설정 파일을 사용해 커스터마이징 가능
  • 확장성: 다양한 플러그인을 통한 기능 확장

 

 


 

Vim 주요모드

  1. Normal Mode (기본 모드)
    • 키 입력을 통해 커서 이동, 텍스트 삭제/복사 등의 편집 작업 수행
  2. Insert Mode
    • 키보드 입력을 통해 텍스트를 직접 편집
    • `i`, `a`, `o` 등의 키로 진입
  3. Visual Mode
    • 범위 선택을 위한 모드로, 선택된 텍스트에 대해 복사/삭제/변경 등의 작업 가능
    • `v` 로 진입하여 문자 단위, `V` 로 줄 단위, `Ctrl-v` 로 블록 단위 선택
  4. 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

https://namu.wiki/w/vim

https://www.vim.org/

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