동작하는 코드
예제 1: nano로 파일 편집하기
nano는 가장 직관적인 터미널 편집기입니다. 단축키가 화면 아래에 항상 표시됩니다.
nano hello.txt
파일이 열립니다. 텍스트를 바로 입력할 수 있습니다:
안녕하세요, 터미널 편집기!
두 번째 줄입니다.
저장하고 종료:
Ctrl+O→ Enter — 저장 (Write Out)Ctrl+X— 종료
화면 아래의 ^는 Ctrl을 의미합니다.
예제 2: nano에서 유용한 단축키
nano를 열어 편집하면서 다음 단축키를 연습해보세요:
| 단축키 | 동작 |
| -------- | ---------------------- |
| Ctrl+O | 저장 |
| Ctrl+X | 종료 |
| Ctrl+K | 현재 줄 잘라내기(삭제) |
| Ctrl+U | 붙여넣기 |
| Ctrl+W | 검색 |
| Ctrl+G | 도움말 |
| Ctrl+/ | 특정 줄로 이동 |
예제 3: vim 시작하기 — 탈출법부터
vim을 처음 열면 당황하기 쉽습니다. 가장 먼저 배울 것은 나가는 법입니다:
vim test.txt
vim이 열립니다. 이 상태는 Normal 모드입니다.
종료하는 방법:
:q+ Enter — 변경사항 없을 때 종료:q!+ Enter — 저장 없이 강제 종료:wq+ Enter — 저장하고 종료
어떤 상태든 Esc를 여러 번 누르면 Normal 모드로 돌아옵니다.
직접 수정하기
vim 모드 시스템
vim의 핵심은 모드입니다. 다른 편집기와 가장 다른 점입니다.
Normal 모드 → i(insert) → Insert 모드
Insert 모드 → Esc → Normal 모드
Normal 모드 → v → Visual 모드
Visual 모드 → Esc → Normal 모드
Normal 모드 → : → Command 모드
vim을 열면 항상 Normal 모드에서 시작합니다.
기본 편집 흐름:
vim myfile.txt
i— Insert 모드 진입 (화면 아래-- INSERT --표시)- 텍스트 입력
Esc— Normal 모드로 복귀:wq+ Enter — 저장하고 종료
Normal 모드 핵심 명령어
Normal 모드에서는 타이핑이 명령어입니다. 모든 커서 이동과 편집을 키보드로 처리합니다.
이동
| 키 | 동작 |
| ----- | ------------------ |
| h | ← 왼쪽 |
| l | → 오른쪽 |
| j | ↓ 아래 |
| k | ↑ 위 |
| w | 다음 단어 시작으로 |
| b | 이전 단어 시작으로 |
| 0 | 줄 처음으로 |
| $ | 줄 끝으로 |
| gg | 파일 처음으로 |
| G | 파일 끝으로 |
| :10 | 10번째 줄로 |
편집
| 키 | 동작 |
| -------- | -------------------------------- |
| i | 커서 앞에서 Insert 모드 |
| a | 커서 뒤에서 Insert 모드 (append) |
| o | 다음 줄에 새 줄 + Insert 모드 |
| O | 이전 줄에 새 줄 + Insert 모드 |
| dd | 현재 줄 삭제 (잘라내기) |
| yy | 현재 줄 복사 (yank) |
| p | 붙여넣기 (paste) |
| u | 실행 취소 (undo) |
| Ctrl+R | 재실행 (redo) |
| x | 커서 위 문자 삭제 |
검색과 치환
| 키/명령 | 동작 |
| ----------------- | -------------- |
| /단어 | 앞으로 검색 |
| ?단어 | 뒤로 검색 |
| n | 다음 검색 결과 |
| N | 이전 검색 결과 |
| :%s/원본/교체/g | 전체 치환 |
Visual 모드: 블록 선택
v → 문자 단위 선택
V → 줄 단위 선택
Ctrl+V → 직사각형 블록 선택
선택 후:
d— 삭제y— 복사>— 들여쓰기<— 내어쓰기
실전 시나리오: git commit 메시지 편집
git commit을 -m 없이 실행하면 vim이 열립니다:
git config --global core.editor vim # vim을 기본 편집기로 설정
git commit # vim이 열림
vim에서 커밋 메시지 작성:
i— Insert 모드- 메시지 입력 (
feat: 새 기능 추가) Esc— Normal 모드:wq— 저장하고 종료
vim이 불편하면 nano로 바꿀 수 있습니다:
git config --global core.editor nano
"왜?" — 터미널 편집기가 필요한 이유
서버에는 VS Code, Cursor 같은 GUI 편집기가 없습니다. SSH로 서버에 접속해서 설정 파일을 수정하거나, 빠르게 파일을 편집할 때 터미널 편집기가 필수입니다.
편집기 선택 가이드
| 상황 | 추천 편집기 |
| ----------------- | -------------------------- |
| 빠르게 파일 수정 | nano (쉽고 직관적) |
| 서버 작업이 많음 | vim (어디서나 사용 가능) |
| 강력한 기능 원함 | neovim (vim의 현대적 버전) |
| 이미 VS Code 사용 | code 파일명 (로컬에서) |
vim을 배울 가치가 있는 이유:
- 거의 모든 리눅스/Mac 서버에 기본 설치
- 손이 키보드를 떠나지 않아 빠름
- 마우스 없이 모든 편집 가능
- 커스터마이징이 뛰어남
흔한 실수
실수 1: vim에서 텍스트가 입력되지 않음
vim을 열면 Normal 모드입니다. 타이핑하면 명령어로 해석됩니다.
# vim을 열었을 때 "hello" 입력하면
# h → 왼쪽 이동
# e → 단어 끝으로 이동
# l → 오른쪽 이동
# l → 오른쪽 이동
# o → 새 줄 + Insert 모드
반드시 i를 눌러 Insert 모드로 전환한 후 텍스트를 입력하세요.
실수 2: Esc를 누르지 않고 저장 시도
# Insert 모드에서 :wq 입력하면
# ← ":wq"가 텍스트로 입력됨
# 올바른 순서
Esc → :wq → Enter
실수 3: 여러 파일을 열어 혼란
# 실수로 vim을 여러 번 열었을 때
# :q로 현재 파일 종료 후 다음으로
vim file1.txt file2.txt
:n # 다음 파일
:N # 이전 파일
심화 학습
vim 설정 파일 (~/.vimrc)
vim의 기본 동작을 커스터마이징할 수 있습니다:
" ~/.vimrc
set number " 줄 번호 표시
set tabstop=2 " 탭을 2칸으로
set expandtab " 탭을 스페이스로
set autoindent " 자동 들여쓰기
set hlsearch " 검색 결과 하이라이트
set incsearch " 실시간 검색
syntax on " 문법 강조
파일이 없으면 만들면 됩니다: vim ~/.vimrc
neovim: 현대적인 vim
neovim은 vim의 현대적 버전으로, 더 나은 기본값과 플러그인 생태계를 갖고 있습니다:
brew install neovim
nvim 파일명
사용법은 vim과 동일합니다. 개발자들 사이에서 점점 더 인기를 얻고 있습니다.
VS Code를 터미널 편집기로 사용하기
로컬 개발 환경에서는 VS Code를 터미널 편집기로 설정할 수 있습니다:
git config --global core.editor "code --wait"
git commit 시 VS Code가 열리고, 닫으면 커밋이 완료됩니다.
주의: 이 방법은 서버(SSH)에서는 사용할 수 없습니다.
nano practice.txt로 새 파일을 열어 3줄을 입력하고,Ctrl+O로 저장하고Ctrl+X로 종료하세요.cat practice.txt로 내용을 확인하세요.vim practice.txt로 파일을 열어G로 끝으로 이동하고,o로 새 줄을 추가하고,Esc→:wq로 저장하세요.- vim에서
dd로 줄을 삭제하고,u로 실행 취소해보세요. /찾는단어로 검색하고n으로 다음 결과로 이동해보세요.
Q1. vim에서 저장하지 않고 강제 종료하는 명령어는?
- A)
:exit - B)
:q - C)
:q! - D)
:quit!