본문 바로가기
생활정보

리눅스/유닉스 필수 텍스트 편집기, Vim(Vi) 명령어 완벽 정리 및 실전 활용 가이드

by trendofkorea 2025. 10. 6.
반응형

 

리눅스 초심자도 마스터하는 Vim/Vi 명령어 핵심 정리! 이 포스팅 하나로 파일 편집, 복사, 붙여넣기, 문자열 치환까지 모두 끝내고 개발 효율을 극대화하세요. 💡

 

리눅스나 유닉스 환경에서 작업해본 분들이라면 'Vim(Vi)' 에디터 때문에 좌절했던 경험 한 번쯤 있으실 거예요. 텍스트를 입력하려는데 자꾸 이상한 명령어가 실행되고, 저장하고 나가고 싶은데 어떻게 해야 할지 몰라 당황하셨던 경험! 저만 그런 건 아니겠죠? 😅

Vim은 겉보기엔 어려워 보이지만, 사실 모드 개념만 이해하면 마우스를 사용하지 않고도 텍스트를 가장 빠르고 효율적으로 편집할 수 있는 '궁극의 도구'거든요. 개발자나 서버 관리자에게는 필수 중의 필수 스킬이고요. 이 글을 통해 Vim의 복잡한 명령어들을 체계적으로 정리하고, 여러분의 터미널 작업을 훨씬 쉽고 빠르게 만들어 드릴게요!

오늘부터 Vim 고수 되는 방법을 함께 익혀봐요! 😊

 

Vim/Vi의 3가지 핵심 모드 이해하기 🤔

Vim을 처음 접할 때 가장 헷갈리는 부분이 바로 '모드(Mode)' 개념입니다. Vim은 일반적인 메모장처럼 하나의 모드로 작동하지 않고, 목적에 따라 세 가지 모드가 존재해요.

이 세 가지 모드의 전환 방법을 완벽하게 이해하는 것이 Vim 마스터의 첫걸음입니다. 핵심은 ESC 키를 눌러 항상 '명령 모드'로 돌아와야 한다는 점이에요!

모드 주요 역할 진입/전환 방법
명령 모드 (Command Mode) 커서 이동, 삭제(dd), 복사(yy), 붙여넣기(p), 되돌리기(u) 등 모든 편집 명령 수행. vi 시작 시 기본 모드 / 다른 모드에서 ESC
입력 모드 (Insert Mode) 실제 텍스트 입력 및 수정이 가능한 모드. 명령 모드에서 i, a, o, I, A, O 중 하나 입력
마지막 행 모드 (Last Line Mode) 파일 저장/종료, 검색/치환, 환경 설정(set nu) 등 특별 명령 수행. 명령 모드에서 :(콜론), /(슬래시), ?(물음표) 입력
💡 알아두세요!
Vim을 시작하는 가장 흔한 방법은 터미널에 vi [파일명] 또는 vim [파일명]을 입력하는 것입니다. 이때 처음 진입하는 모드가 바로 '명령 모드'예요.

 

자주 사용하는 Vim 핵심 명령어 총정리 📊

이제 모드 전환에 익숙해졌다면, 실무에서 가장 많이 쓰는 필수 명령어들을 정리해 드릴게요. 이 명령어들만 손에 익히면 Vim 작업 속도가 최소 3배는 빨라질 거예요. 믿어보세요! 😉

1. 저장 및 종료 (마지막 행 모드, : 입력)

명령어 설명 단축
:w 변경 내용 저장 -
:q 종료 (변경 사항 없으면) -
:wq 또는 ZZ 저장 후 종료 (가장 많이 사용) ZZ
:q! 저장하지 않고 강제 종료 (변경 사항 무시) -

2. 텍스트 입력 모드 진입 (명령 모드에서 입력)

  • i (insert): 현재 커서 위치 에 삽입
  • a (append): 현재 커서 위치 에 삽입
  • o (open line): 현재 줄 다음 줄에 새 줄 삽입 후 입력
  • I (대문자 i): 현재 행 맨 처음(공백 제외)에 삽입
  • A: 현재 행 맨 끝에 삽입

3. 이동, 삭제, 복사, 붙여넣기 (명령 모드에서 입력)

기능 명령어 설명
줄 이동 G / gg / :숫자 G: 파일 맨 끝, gg: 파일 맨 처음, :10: 10번째 줄로 이동
행/단어 이동 w / b / 0 / $ w: 다음 단어, b: 이전 단어, 0: 행 시작, $: 행 끝
줄 삭제 (잘라내기) dd 커서가 있는 줄 전체 삭제. 3dd는 현재 줄 포함 3줄 삭제.
한 글자/단어 삭제 x / dw x: 한 글자 삭제, dw: 한 단어 삭제
복사 yy 현재 줄 복사. 5yy는 현재 줄 포함 5줄 복사.
붙여넣기 p / P p: 커서 줄 아래 붙여넣기, P: 커서 줄 에 붙여넣기
되돌리기 u / Ctrl + r u: Undo(실행 취소), Ctrl + r: Redo(재실행)
⚠️ 주의하세요!
dd 명령은 단순 삭제가 아니라 '잘라내기' 기능이에요. 즉, 삭제한 내용은 클립보드에 저장되므로, 바로 p 명령으로 붙여넣기가 가능합니다. 실수로 삭제했다면 바로 u를 눌러 되돌리세요!

 

 

고급 스킬: 검색, 치환, 설정 변경 🧮

단순 편집을 넘어, 대규모 파일에서 특정 문자열을 찾거나 한 번에 바꾸는 작업은 Vim의 '마지막 행 모드'에서 이루어집니다. 이 기능들은 코드를 수정하거나 로그 파일을 분석할 때 정말 유용해요.

🔍 문자열 검색 공식

아래 방향 검색: /찾을문자열

위 방향 검색: ?찾을문자열

→ 검색 후, 다음/이전 결과로 이동하려면 명령 모드에서 n (다음) 또는 N (이전)을 누릅니다.

가장 강력한 기능 중 하나는 바로 문자열 치환(Replace)입니다. 이 기능 덕분에 수백 줄의 코드에서도 특정 변수명이나 설정을 단숨에 바꿀 수 있어요.

♻️ 문자열 치환 공식

전체 치환: :%s/기존문자열/새문자열/g

현재 줄 치환: :s/기존문자열/새문자열/g

치환 옵션: g(전체 행), c(치환할 때마다 확인 요청)

여기에는 계산 예시나 사례를 통한 설명을 작성합니다:

1) 첫 번째 단계: :5,10s/error/warning/g (5행부터 10행까지 'error'를 'warning'으로 전체 치환)

2) 두 번째 단계: :%s/http/https/gc (파일 전체에서 'http'를 'https'로 바꾸되, 바꿀 때마다 사용자에게 '확인(c)' 또는 '넘어가기(n)' 요청)

→ 복잡한 치환도 이 공식만 알면 문제 없죠! 특히 c 옵션은 실수를 방지해주는 아주 좋은 습관이랍니다.

🔢 자주 쓰는 환경 설정 (라인 번호, 탭 크기 등)

라인 번호 표시:
:set nu
라인 번호 숨기기:
:set nonu
탭 크기 설정:
:set ts=4 (탭을 4칸으로 설정)
탭 → 공백 변환:
:set expandtab

 

명령어 활용 실전 예시: 40대 서버 관리자 박대리님 👩‍💼👨‍💻

이론만으로는 감이 잘 안 오죠? 실제 상황에 대입해서 어떻게 Vim을 활용하는지 보여드릴게요. 40대 서버 관리자인 박대리님이 새벽에 긴급 장애 처리를 위해 설정 파일(server.conf)을 수정해야 하는 상황이라고 가정해봅시다.

사례 주인공의 상황

  • 정보 1: 3000줄짜리 설정 파일에서 'MaxClients' 설정을 '256'으로 변경해야 함.
  • 정보 2: 로그 기록을 위해 1500번째 줄에 새로운 로깅 설정을 한 줄 추가해야 함.

Vim 명령어 적용 과정

1) vi server.conf 파일 열기 후 명령 모드 진입.

2) :%s/MaxClients 150/MaxClients 256/g 입력 (전체 파일에서 기존 설정값 150을 256으로 일괄 치환).

3) :1500 입력 (1500번째 줄로 바로 이동).

4) o 입력 (1500번째 줄 다음 줄에 새 줄 삽입, 입력 모드 전환).

5) 새로운 로깅 설정을 입력 후 ESC로 명령 모드 복귀.

최종 결과

- 결과 항목 1: 파일 전체 설정값 변경 완료. 단 몇 초 만에 3000줄 파일을 편집했습니다.

- 결과 항목 2: :wq 입력으로 저장 후 종료하여 서버 재시작 준비 완료.

이처럼 Vim 명령어를 숙지하면, 마우스로 일일이 스크롤하고 검색하는 것보다 훨씬 빠르고 정확하게 작업을 처리할 수 있답니다. 특히 원격 접속 환경에서는 Vim이 빛을 발하죠!

 

마무리: 핵심 내용 요약 📝

Vim 명령어, 생각보다 복잡하지 않죠? 핵심은 3가지 모드(명령, 입력, 마지막 행)와 ESC 키의 역할을 명확히 이해하는 것입니다. 다시 한번 핵심만 콕콕 집어 드릴게요!

  1. 첫 번째 핵심 포인트. ESC로 명령 모드 복귀가 가장 중요합니다. 다른 모드에서 명령을 실행할 수 없어요!
  2. 두 번째 핵심 포인트. 텍스트 입력은 i, a, o 중 하나로 입력 모드에 진입해서만 가능해요.
  3. 세 번째 핵심 포인트. 줄 삭제, 복사, 붙여넣기는 dd, yy, p로 간편하게 사용합니다.
  4. 네 번째 핵심 포인트. 저장 후 종료는 :wq 또는 ZZ, 강제 종료는 :q!를 기억하세요.
  5. 다섯 번째 핵심 포인트. 대량 작업은 :%s/기존/새로운/g 치환 명령으로 해결합니다.

이제 터미널을 열고 직접 파일을 만들고 수정하면서 손에 익히는 일만 남았어요! 명령어는 눈으로 보는 것보다 몸으로 익히는 게 최고거든요. 궁금한 점은 댓글로 물어봐주세요~ 😊

💡

Vim 3가지 모드 및 필수 단축키 요약

✨ 모드 전환 핵심: 항상 ESC를 눌러 명령 모드로 돌아와야 명령 실행이 가능해요!
📊 편집 명령어: 줄 삭제는 dd, 줄 복사는 yy, 붙여넣기는 p로 기억하세요.
🧮 대량 치환 공식:
파일 전체 치환 = :%s/기존문자열/새문자열/g
👩‍💻 파일 저장/종료: :wq (저장 후 종료) 또는 :q! (강제 종료)를 사용합니다.

자주 묻는 질문 ❓

Q: Vim과 Vi의 차이점은 무엇인가요?
A: Vi(Visual Editor)가 원조이고, Vim(Vi IMproved)은 Vi를 개선하여 추가적인 기능(예: 구문 강조, 다단계 Undo, 화면 분할 등)을 더한 버전입니다. 대부분의 리눅스 배포판에서는 vi를 입력해도 Vim이 실행되는 경우가 많습니다.
Q: Vim에서 저장하지 않고 종료하는 가장 빠른 방법은 무엇인가요?
A: :q!를 입력하면 변경된 내용을 저장하지 않고 즉시 강제 종료됩니다. 만약 변경된 내용이 없다면 :q만으로 종료할 수 있어요.
Q: 입력 모드로 전환하는 i, a, o 명령어의 차이점은 무엇인가요?
A: i는 커서의 '앞'에 삽입, a는 커서의 '뒤'에 삽입, o는 커서가 있는 줄의 '다음 줄'에 새 줄을 만들어 삽입하는 차이가 있습니다. 각 상황에 따라 효율적인 명령어를 사용하세요.
Q: 편집 중 실수했을 때, 이전으로 되돌리는 명령은 무엇인가요?
A: 명령 모드에서 u(undo)를 누르면 가장 최근의 변경 사항을 취소할 수 있습니다. Ctrl + r을 누르면 취소한 내용을 다시 복구(redo)할 수 있어요.
Q: 라인 번호를 화면에 표시하고 싶어요. 어떻게 해야 하나요?
A: 명령 모드에서 :set nu를 입력하고 엔터키를 누르면 화면 왼쪽에 줄 번호(number)가 표시됩니다. 다시 숨기려면 :set nonu를 입력하세요.
반응형