DaleSchool

터미널 텍스트 편집기

입문25분

학습 목표

  • nano로 파일을 열고 편집하고 저장할 수 있다
  • vim의 모드 시스템을 이해하고 기본 편집을 할 수 있다
  • vim Normal 모드의 핵심 명령어를 사용할 수 있다
  • 서버 환경에서 터미널 편집기가 필요한 이유를 설명할 수 있다

동작하는 코드

예제 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 모드로 돌아옵니다.

터미널

echo 내용 >> 파일.txt로 파일을 만들고 cat으로 확인해보세요. 텍스트 파일을 만들고 내용을 추가해보세요.

user@daleschool:~$

직접 수정하기

vim 모드 시스템

vim의 핵심은 모드입니다. 다른 편집기와 가장 다른 점입니다.

Normal 모드 → i(insert) → Insert 모드
Insert 모드 → Esc       → Normal 모드
Normal 모드 → v         → Visual 모드
Visual 모드 → Esc       → Normal 모드
Normal 모드 → :         → Command 모드

vim을 열면 항상 Normal 모드에서 시작합니다.

기본 편집 흐름:

vim myfile.txt
  1. i — Insert 모드 진입 (화면 아래 -- INSERT -- 표시)
  2. 텍스트 입력
  3. Esc — Normal 모드로 복귀
  4. :wq + Enter — 저장하고 종료

Normal 모드 핵심 명령어

Normal 모드에서는 타이핑이 명령어입니다. 모든 커서 이동과 편집을 키보드로 처리합니다.

이동

동작
h← 왼쪽
l→ 오른쪽
j↓ 아래
k↑ 위
w다음 단어 시작으로
b이전 단어 시작으로
0줄 처음으로
$줄 끝으로
gg파일 처음으로
G파일 끝으로
:1010번째 줄로

편집

동작
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에서 커밋 메시지 작성:

  1. i — Insert 모드
  2. 메시지 입력 (feat: 새 기능 추가)
  3. Esc — Normal 모드
  4. :wq — 저장하고 종료

vim이 불편하면 nano로 바꿀 수 있습니다:

git config --global core.editor nano

"왜?" — 터미널 편집기가 필요한 이유

서버에는 VS Code, Cursor 같은 GUI 편집기가 없습니다. SSH로 서버에 접속해서 설정 파일을 수정하거나, 빠르게 파일을 편집할 때 터미널 편집기가 필수입니다.

편집기 선택 가이드

상황추천 편집기
빠르게 파일 수정nano (쉽고 직관적)
서버 작업이 많음vim (어디서나 사용 가능)
강력한 기능 원함neovim (vim의 현대적 버전)
이미 VS Code 사용code 파일명 (로컬에서)

vim을 배울 가치가 있는 이유:

  1. 거의 모든 리눅스/Mac 서버에 기본 설치
  2. 손이 키보드를 떠나지 않아 빠름
  3. 마우스 없이 모든 편집 가능
  4. 커스터마이징이 뛰어남

흔한 실수

실수 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)에서는 사용할 수 없습니다.

  1. nano practice.txt로 새 파일을 열어 3줄을 입력하고, Ctrl+O로 저장하고 Ctrl+X로 종료하세요.
  2. cat practice.txt로 내용을 확인하세요.
  3. vim practice.txt로 파일을 열어 G로 끝으로 이동하고, o로 새 줄을 추가하고, Esc:wq로 저장하세요.
  4. vim에서 dd로 줄을 삭제하고, u로 실행 취소해보세요.
  5. /찾는단어로 검색하고 n으로 다음 결과로 이동해보세요.

vim에서 저장하지 않고 강제 종료하는 명령어는?