본문 바로가기

학위공부/IT 자격증

2026 리눅스마스터 2급 ⑦ 에디터|vi·Vim 모드와 검색·치환·저장 명령

리눅스 터미널과 서버, 펭귄 캐릭터, 학습 체크리스트로 구성한 리눅스마스터 2급 전체 학습지도 대표 이미지

결론부터 말하면, vi·Vim 문제는 현재 모드를 먼저 판단하면 절반이 풀립니다. Normal 모드에서는 글자가 명령이고, Insert 모드에서는 글자가 본문으로 입력됩니다. :로 시작하는 저장·종료·치환 명령은 명령줄 모드에서 실행합니다. 같은 키라도 모드가 다르면 결과가 완전히 달라집니다.

KAIT 현행 출제기준은 리눅스마스터 2급 에디터 영역에서 에디터의 종류와 에디터 활용을 다룹니다. 이 글은 Vim 공식 문서의 기본 모드와 편집 흐름을 중심으로 vi 계열을 정리하고, GNU Emacs와 GNU nano는 조작 방식 차이를 구별할 정도로 설명합니다. 연재 전체 위치는 2026 리눅스마스터 2급 전체 학습지도에서 확인하세요.

리눅스 에디터 핵심 비교표

에디터 조작 방식 대표 특징 기본 저장·종료
vi/Vim 모드형 Normal 모드의 짧은 명령을 조합해 이동·편집 :w, :q, :wq
GNU Emacs 키 조합 중심 확장·사용자 정의가 강한 편집 환경 C-x C-s, C-x C-c
GNU nano 비모드형에 가까운 직접 입력 화면 아래 단축키가 보여 입문자가 접근하기 쉬움 Ctrl+O, Ctrl+X

배포판에서 vi 명령이 실제로 Vim, nvi 또는 다른 구현을 가리킬 수 있습니다. vi와 Vim을 무조건 같은 바이너리라고 단정하지 말고 command -v vi와 각 구현의 도움말을 확인하세요.

Vim의 네 가지 기본 모드

모드 목적 들어가는 대표 키 나오기
Normal 이동·삭제·복사·붙여넣기 등 명령 실행 Vim 시작 시 기본, 다른 모드에서 Esc 다른 모드 명령 입력
Insert 문자 입력 i, a, o Esc
Visual 문자·행·블록 범위 선택 v, V, Ctrl+V Esc
Command-line Ex 명령, 검색, 치환, 저장·종료 :, /, ? Enter 또는 Esc

국내 교재에서 ‘마지막 행 모드’라고 부르는 것은 보통 화면 아래에 : 명령을 입력하는 명령줄 모드를 가리킵니다. Vim 공식 문서에서는 Command-line mode와 Ex 명령이라는 표현을 사용하므로 두 용어를 연결해 두면 헷갈리지 않습니다.

기존 파일이 아닌 /tmp 연습 파일로 시작하기

practice_file=$(mktemp /tmp/lm-vim-practice.XXXXXX)
printf '%s\n' \
  'server=alpha' \
  'port=8080' \
  'server=beta' \
  > "$practice_file"

vim "$practice_file"

시스템 설정 파일을 바로 열지 말고 새 연습 파일에서 모드 이동과 저장을 익히세요. Vim이 열리면 Normal 모드에서 시작합니다. i를 눌러 문자를 입력하고 Esc로 돌아온 뒤 :w로 저장합니다.

이동·입력·삭제·복사 명령

목적 Normal 모드 명령
이동 h j k l 왼쪽·아래·위·오른쪽
단어 이동 w, b 다음 단어 시작·이전 단어 시작
행 이동 0, $ 행 시작·행 끝
입력 시작 i, a, o 커서 앞·뒤, 아래 새 행에서 입력
삭제 x, dd 문자 하나·현재 행 삭제
복사·붙여넣기 yy, p 현재 행 yank, 커서 뒤 또는 아래에 put
실행 취소·재실행 u, Ctrl+R undo·redo

Vim 명령은 횟수와 동작을 조합할 수 있습니다. 예를 들어 3dd는 현재 행부터 세 행을 삭제하고, 2w는 단어 이동을 두 번 수행합니다. 다만 시험 준비 단계에서는 한 글자·한 행·한 단어 단위의 기본부터 정확히 익히는 것이 좋습니다.

검색과 치환

명령 동작
/server 앞쪽 방향으로 server 검색
?server 뒤쪽 방향으로 server 검색
n/N 마지막 검색과 같은 방향·반대 방향으로 다음 일치 이동
:s/alpha/gamma/ 현재 행의 첫 alpha를 gamma로 치환
:%s/server/node/g 모든 행에서 각 행의 모든 server를 node로 치환
:%s/server/node/gc 전체 치환 전 각 일치에서 확인

%는 전체 행 범위, 끝의 g는 각 행에서 첫 번째만이 아니라 모든 일치를 뜻합니다. 검색 정규식에는 특별한 문자가 있으므로 점이나 대괄호 같은 문자를 그대로 찾을 때는 패턴 규칙을 확인해야 합니다.

저장과 종료

명령 동작 주의
:w 현재 버퍼를 파일에 기록 종료하지 않음
:q 변경 사항이 없으면 종료 미저장 변경이 있으면 거부될 수 있음
:wq 저장 후 종료 :x와 세부 기록 동작은 완전히 같지 않음
:q! 미저장 변경을 버리고 종료 복구가 필요한 내용을 잃을 수 있음
:w 새이름 지정한 이름으로 기록 현재 편집 파일 전환과는 별개

Vim은 파일을 버퍼로 읽고, 버퍼를 편집한 뒤, :write 계열 명령으로 디스크에 기록합니다. 화면에서 바뀌어 보이는 것과 파일에 저장된 것은 다르다는 점을 기억하세요.

nano와 Emacs는 어떻게 구별할까

  • nano: 입력 모드 전환 없이 바로 타이핑하며 화면 아래의 ^O(Write Out), ^X(Exit), ^W(검색) 같은 단축키를 활용합니다. ^는 Ctrl을 뜻합니다.
  • Emacs: C-x C-s처럼 연속 키 조합을 사용하고, 버퍼·창·확장 기능을 중심으로 동작합니다. C는 Ctrl, M은 Meta를 뜻합니다.
  • Vim: Normal과 Insert 모드를 오가며 짧은 명령을 동작·범위와 조합합니다.

자주 틀리는 지점

  • Vim 시작 직후에는 보통 Normal 모드입니다. 바로 문자를 입력하면 글이 아니라 명령이 됩니다.
  • i는 입력을 시작하고, Esc는 Normal 모드로 돌아옵니다.
  • dd는 현재 행 삭제, yy는 현재 행 복사입니다.
  • :q!는 안전한 일반 종료가 아니라 저장하지 않은 변경을 버리는 강제 종료입니다.
  • :%s/a/b/g%g는 각각 전체 행 범위와 행 안의 모든 일치를 뜻합니다.

직접 만든 셀프체크 5문항

  1. Vim의 Normal 모드와 Insert 모드에서 문자 키의 의미는 어떻게 다른가?
  2. 현재 행을 복사한 뒤 아래에 붙여넣는 두 명령은 무엇인가?
  3. 파일 전체의 모든 oldnew로 바꾸는 기본 치환 명령은 무엇인가?
  4. :q:q!의 차이는 무엇인가?
  5. nano에서 ^O^X는 각각 무엇을 뜻하는가?
정답 확인
  1. Normal 모드에서는 문자가 편집 명령이고, Insert 모드에서는 문자가 본문에 입력됩니다.
  2. yy 뒤에 p를 사용합니다.
  3. :%s/old/new/g입니다.
  4. :q는 미저장 변경이 있으면 종료를 거부할 수 있고, :q!는 그 변경을 버리고 종료합니다.
  5. ^O는 파일 기록, ^X는 종료입니다.

공식 자료

이 글은 2026년 7월 11일 갱신했습니다. 온라인 Vim 도움말은 Vim 9.2 계열을 반영하지만 KAIT 시험 환경에는 다른 Vim·vi 구현이 포함될 수 있습니다. 시험에서는 구현별 고급 기능보다 모드, 이동, 삭제·복사, 검색·치환, 저장·종료의 공통 기본을 먼저 확인하세요.

리눅스마스터 2급 전체 학습지도로 돌아가기