Vim 명령어 정리 (2편) — 검색/치환, Visual 모드, 분할 화면, 설정

2026. 5. 24. 15:15·블로그, 컴퓨터/Cheatsheets

vim, neovim cheatsheet thumbnail

1편에서 모드 개념, 이동, 기본 편집, 저장과 종료를 다뤘습니다. 2편에서는 실제로 쓸 때 자주 필요한 검색과 치환, Visual 모드, 분할 화면, 그리고 ~/.vimrc에 넣어두면 편한 설정들을 정리합니다.


검색

기본 검색

Normal 모드에서 /를 누르면 하단에 검색창이 열립니다. 검색어를 입력하고 Enter를 누르면 첫 번째 결과로 이동합니다.

/패턴        아래 방향으로 검색
?패턴        위 방향으로 검색
n            다음 결과로 이동 (검색 방향 그대로)
N            이전 결과로 이동 (검색 방향 반대)

커서 단어 검색

커서가 단어 위에 있을 때 *나 #을 누르면 해당 단어를 바로 검색합니다.

*    커서 위 단어를 아래 방향으로 검색
#    커서 위 단어를 위 방향으로 검색

변수명이나 함수명을 찾을 때 /로 직접 치는 것보다 훨씬 빠릅니다.

검색 하이라이트 끄기

검색 후 하이라이트가 남아 있을 때 :noh(또는 :nohlsearch)로 끕니다.

:noh

매번 치기 귀찮으면 ~/.vimrc에 단축키로 등록해두는 게 편합니다. 이건 설정 섹션에서 다시 나옵니다.


치환 (substitute)

:s 명령어로 텍스트를 치환합니다. 구조는 이렇습니다.

:[범위]s/찾을패턴/바꿀내용/[플래그]

자주 쓰는 형태들입니다.

:s/old/new          현재 줄, 첫 번째 old만 교체
:s/old/new/g        현재 줄, old 전체 교체
:%s/old/new/g       파일 전체, old 전체 교체
:%s/old/new/gc      파일 전체, 하나씩 확인하며 교체 (c = confirm)
:10,20s/old/new/g   10~20번째 줄에서 교체

/gc에서 c 옵션을 붙이면 하나씩 y/n/a/q로 확인하면서 교체할 수 있습니다. 잘못 바꾸면 안 되는 경우에 씁니다.

정규식도 됩니다.

:%s/\s\+$//         줄 끝 공백 전체 제거
:%s/^/# /           모든 줄 앞에 "# " 추가
:%s/foo\|bar/baz/g  foo 또는 bar를 baz로 교체

Visual 모드

Visual 모드는 범위를 선택해서 명령어를 적용하는 모드입니다. 세 가지 종류가 있습니다.

v        문자 단위 선택 (일반 Visual)
V        줄 단위 선택 (Visual Line)
Ctrl+v   블록 단위 선택 (Visual Block)

선택한 뒤 할 수 있는 것들입니다.

d        선택 범위 삭제
y        선택 범위 복사
c        선택 범위 삭제 후 Insert 모드
>        들여쓰기 (indent)
<        내어쓰기 (outdent)
=        자동 들여쓰기 정렬
~        대소문자 반전

Visual Block이 특히 유용한 경우

여러 줄에 동시에 같은 내용을 삽입하거나, 세로 방향으로 특정 컬럼만 편집할 때 쓸 만합니다.

예를 들어 여러 줄의 맨 앞에 #을 추가하려면:

  1. Ctrl+v로 블록 선택 시작
  2. j로 원하는 줄만큼 아래로 이동해서 범위 지정
  3. I로 Insert 모드 진입
  4. # 입력
  5. Esc

그러면 선택했던 모든 줄 앞에 #이 추가됩니다.


들여쓰기

>>      현재 줄 들여쓰기
<<      현재 줄 내어쓰기
3>>     세 줄 들여쓰기
gg=G    파일 전체 자동 들여쓰기 정렬

Visual 모드에서 범위를 선택하고 >나 <를 쓰면 선택된 범위에 적용됩니다. 들여쓰기를 여러 번 하려면 3>처럼 숫자를 붙입니다.


분할 화면

창 분할

:sp 파일명      수평 분할 (위아래)
:vsp 파일명     수직 분할 (좌우)
:sp             파일명 없이 쓰면 현재 파일을 분할

창 간 이동

Ctrl+w h    왼쪽 창으로
Ctrl+w j    아래 창으로
Ctrl+w k    위 창으로
Ctrl+w l    오른쪽 창으로
Ctrl+w w    다음 창으로 순환

창 크기 조절

Ctrl+w +    현재 창 높이 증가
Ctrl+w -    현재 창 높이 감소
Ctrl+w >    현재 창 너비 증가
Ctrl+w <    현재 창 너비 감소
Ctrl+w =    모든 창 동일한 크기로

창 닫기

:q          현재 창 닫기
:only       현재 창만 남기고 나머지 닫기
Ctrl+w c    현재 창 닫기

버퍼와 탭

vim에서는 파일 하나하나를 "버퍼"라고 합니다. 탭은 그 버퍼를 보여주는 레이아웃 단위입니다.

버퍼

:e 파일명       파일 열기 (새 버퍼)
:ls             열린 버퍼 목록
:b 번호         해당 번호 버퍼로 전환
:b 파일명       파일명으로 버퍼 전환
:bd             현재 버퍼 닫기
:bn             다음 버퍼
:bp             이전 버퍼

탭

:tabnew 파일명  새 탭으로 파일 열기
:tabn           다음 탭
:tabp           이전 탭
gt              다음 탭 (Normal 모드)
gT              이전 탭
:tabclose       현재 탭 닫기

마크

현재 위치를 저장해두고 나중에 바로 돌아올 수 있습니다.

ma          현재 위치를 'a'라는 이름으로 저장
'a          마크 'a'가 있는 줄로 이동
`a          마크 'a'의 정확한 위치로 이동
''          직전에 있던 위치로 이동
:marks      저장된 마크 목록

소문자 마크(a

z)는 버퍼 내에서만 유효하고, 대문자 마크(A

Z)는 다른 파일 간에도 유지됩니다.


유용한 설정 (~/.vimrc)

vim의 기본 설정은 상당히 불편합니다. 아래 정도만 넣어둬도 훨씬 쓰기 편해집니다.

" 줄 번호 표시
set number

" 상대적 줄 번호 (현재 줄 기준으로 거리 표시)
" 5j, 3k 같은 이동 명령어 쓸 때 편함
set relativenumber

" 검색 하이라이트
set hlsearch

" 검색 중 실시간 이동
set incsearch

" 대소문자 구분 없이 검색 (대문자 포함 시 자동으로 구분)
set ignorecase
set smartcase

" 탭을 스페이스로
set expandtab
set tabstop=4
set shiftwidth=4

" 자동 들여쓰기
set autoindent
set smartindent

" 파일 하단에 상태바 표시
set laststatus=2

" 붙여넣기 시 자동 들여쓰기 비활성화 (터미널에서 paste할 때 유용)
set pastetoggle=<F2>

" 검색 하이라이트 끄기 단축키
nnoremap <leader>/ :nohlsearch<CR>

" 저장 단축키 (Ctrl+s)
nnoremap <C-s> :w<CR>
inoremap <C-s> <Esc>:w<CR>a

이 중에서 set number와 set hlsearch, set incsearch는 최소한으로 넣어두면 확실히 편합니다. pastetoggle은 외부에서 복사한 내용을 터미널에 붙여넣을 때 들여쓰기가 계단식으로 망가지는 걸 막아줘서 실용적입니다.


자주 쓰는 조합 모음

이론보다 실제로 쓰이는 패턴을 몇 가지 보는 게 더 빨리 손에 붙습니다.

ggVG            파일 전체 선택 (gg로 처음 → V로 줄 선택 → G로 파일 끝)
ggVG=           파일 전체 들여쓰기 정렬
gg=G            위와 같음 (더 짧은 버전)

:%y+            파일 전체를 시스템 클립보드에 복사

ci"             큰따옴표 안의 내용 삭제 후 Insert (change inside")
ci(             괄호 안의 내용 삭제 후 Insert
di[             대괄호 안의 내용만 삭제

*               커서 위 단어 검색 후 n으로 순회
:%s/\n/\r/g     줄바꿈 문자 일괄 처리

:g/pattern/d    pattern이 포함된 줄 전체 삭제
:v/pattern/d    pattern이 포함되지 않은 줄 전체 삭제 (:g의 반대)

ci"나 di[ 같은 Text Object 명령어는 처음 보면 낯선데, 익숙해지면 vim에서 가장 빠른 편집 방법 중 하나입니다. c(change) 또는 d(delete) + i(inside) 또는 a(around) + 범위 문자(" ' ( [ { w p)로 조합합니다.


정리 표

분류 명령어 동작
검색 /패턴 ?패턴 아래 / 위 방향 검색
검색 n N 다음 / 이전 결과
검색 * # 커서 단어 검색
검색 :noh 하이라이트 끄기
치환 :%s/old/new/g 파일 전체 치환
치환 :%s/old/new/gc 확인하며 치환
Visual v V Ctrl+v 문자 / 줄 / 블록 선택
들여쓰기 >> << 들여쓰기 / 내어쓰기
들여쓰기 gg=G 파일 전체 정렬
분할 :sp :vsp 수평 / 수직 분할
분할 Ctrl+w h/j/k/l 창 이동
버퍼 :ls :b n 버퍼 목록 / 전환
탭 :tabnew gt gT 새 탭 / 다음 / 이전
마크 ma 'a 위치 저장 / 이동
Text Object ci" di( 범위 내 변경 / 삭제
반응형
저작자표시 비영리 변경금지 (새창열림)

'블로그, 컴퓨터 > Cheatsheets' 카테고리의 다른 글

Neovim 설정 정리 (2편) — lazy.nvim, LSP, 주요 플러그인  (0) 2026.05.25
Neovim 설정 정리 (1편) — init.lua 구조와 Lua 기초  (0) 2026.05.25
Vim 명령어 정리 (1편) — 모드, 이동, 편집, 저장  (0) 2026.05.24
리눅스 터미널 명령어 정리 (2편) — 권한, 프로세스, 네트워크, 검색 & 파이프  (0) 2026.05.23
리눅스 터미널 명령어 정리 (1편) — 파일 탐색, 관리, 내용 확인  (0) 2026.05.23
'블로그, 컴퓨터/Cheatsheets' 카테고리의 다른 글
  • Neovim 설정 정리 (2편) — lazy.nvim, LSP, 주요 플러그인
  • Neovim 설정 정리 (1편) — init.lua 구조와 Lua 기초
  • Vim 명령어 정리 (1편) — 모드, 이동, 편집, 저장
  • 리눅스 터미널 명령어 정리 (2편) — 권한, 프로세스, 네트워크, 검색 & 파이프
생각사람
생각사람
지극히 사적인 연구실
  • 생각사람
    생각사람의 별장
    생각사람
  • 전체
    오늘
    어제
    • 분류 전체보기 (207)
      • 금융 (57)
        • 주식 공부 (11)
        • 파생상품 입문 (17)
        • 파생상품 기초 (15)
        • 파생상품 실전 (14)
      • 블로그, 컴퓨터 (83)
        • 프로그래밍 (16)
        • DevOps (8)
        • AI, RL, ML, ... (5)
        • 애드센스, SEO (23)
        • 임베디드 (3)
        • 컴퓨터 관련 (7)
        • Cheatsheets (21)
      • 다른 공부들 (67)
        • 읽고 쓰기 (18)
        • 수학 (15)
        • 물리 (9)
        • 사진 공부 (25)
  • 인기 글

  • 최근 글

  • 최근 댓글

  • 태그

    AI
    코딩
    cmake
    깃허브
    벡터
    구글 애드센스
    행렬
    오펜하이머
    version control
    슈뢰딩거 방정식
    CheatSheet
    c++
    github
    선형대수학
    스트랭글
    선물 옵션
    c
    옵션 투자
    옵션
    소니 a6000
    깃
    공업수학
    양자역학
    스트래들
    Kreyszig
    GIT
    독후감
    파생상품
    웹크롤러
    프로그래밍
  • hELLO· Designed By정상우.v4.10.6
생각사람
Vim 명령어 정리 (2편) — 검색/치환, Visual 모드, 분할 화면, 설정
상단으로

티스토리툴바