리눅스 텍스트 편집기 Vi 및 Vim 기본 명령어와 종료 방법 요약

리눅스(Linux)나 우분투(Ubuntu) 서버 환경에서 웹 서버 설정 파일(nginx.conf)을 수정하거나 환경 변수(.bashrc)를 편집해야 할 때, 우리는 터미널 창 안에서 작동하는 텍스트 편집기를 사용해야 합니다. 이때 가장 대표적이면서도 모든 리눅스 배포판에 기본적으로 내장된 편집기가 바로 Vi(Visual editor)와 이를 확장한 Vim(Vi Improved)입니다.

하지만 메모장이나 소스 코드 에디터(VS Code 등)에 익숙한 초보자들은 Vim을 처음 실행했을 때 커서가 움직이지 않거나 글자가 입력되지 않아 당황하곤 합니다. 심지어 글을 다 쓰고 어떻게 창을 닫아야 하는지 몰라 터미널 세션을 강제로 종료하는 경우도 부지기수입니다. 본 가이드에서는 Vim이 왜 그렇게 작동하는지 ‘모드(Mode)’의 개념을 이해하고, 실무에 필요한 필수 명령어와 안전한 종료 방법을 상세히 정리합니다.

1. Vim의 핵심 개념: 독특한 3가지 모드 이해하기

Vim이 일반 편집기와 가장 다른 점은 바로 ‘모드형 편집기’라는 것입니다. 마우스 없이 오직 키보드만으로 모든 작업을 빠르게 처리하기 위해 화면의 상태를 여러 모드로 전환해가며 사용합니다. Vim을 정복하려면 이 3가지 모드를 자유자재로 오갈 줄 알아야 합니다.

명령 모드 (Command Mode)

Vim을 처음 실행하면 진입하게 되는 기본 모드입니다. 이 모드에서는 키보드를 눌러도 글자가 입력되지 않고, 커서 이동, 텍스트 복사, 붙여넣기, 삭제 등의 ‘명령어’로 작동합니다. 다른 모드에서 명령 모드로 돌아오려면 언제나 키보드의 ESC 키를 누르면 됩니다.

입력 모드 (Insert Mode)

실제 텍스트를 타이핑하여 내용을 작성하고 수정하는 모드입니다. 우리가 흔히 아는 메모장과 똑같이 작동하는 상태입니다. 명령 모드에서 영문자 i(Insert) 또는 a(Append)를 누르면 화면 왼쪽 아래에 -- INSERT --라는 문구가 뜨며 입력 모드로 전환됩니다.

마지막 행 모드 (Ex Mode / Command-line Mode)

파일을 저장하거나, 종료하거나, 특정 단어를 찾아 바꾸는 등의 시스템 명령을 내리는 모드입니다. 명령 모드에서 콜론(:)을 입력하면 화면 맨 아래줄에 커서가 위치하며 명령을 입력할 수 있는 상태가 됩니다.

2. 모드 전환 및 커서 이동, 편집 기본 명령어

Vim을 켜고 끄는 것 외에도 본문을 수정하기 위해 자주 쓰는 필수 명령어들을 정리해 드립니다. 모두 명령 모드(ESC를 누른 상태)에서 입력해야 작동합니다.

입력 모드로 전환하기

  • i : 현재 커서가 위치한 자리부터 글자 입력 시작
  • a : 현재 커서의 바로 다음 칸부터 글자 입력 시작
  • o : 현재 커서가 있는 줄의 아래에 새로운 줄을 만들고 입력 시작

텍스트 삭제 및 복사, 붙여넣기 (마우스 대용)

  • x : 현재 커서가 위치한 글자 1개 삭제 (딜리트 키 역할)
  • dd : 현재 커서가 있는 행(줄) 전체를 삭제 (또는 잘라내기)
  • yy : 현재 커서가 있는 행(줄) 전체를 복사
  • p : 복사하거나 잘라낸 내용을 현재 커서 아래 줄에 붙여넣기
  • u : 방금 한 작업을 취소하기 (윈도우의 Ctrl + Z 역할)

3. 탈출 불가 초보자를 위한 Vim 종료 명령어 총정리

많은 입문자가 가장 어려워하는 ‘Vim 종료 및 저장’ 방법입니다. 파일 수정을 마쳤거나 잘못 들어왔을 때 안전하게 빠져나가는 방법은 마지막 행 모드를 이용하는 것입니다.

우선 키보드의 ESC를 누른 뒤, 콜론(:)을 입력하고 아래의 명령어 중 상황에 맞는 것을 타이핑한 후 엔터(Enter)를 누릅니다.

:wq (저장하고 종료하기)

가장 많이 쓰는 명령어입니다. 지금까지 변경한 파일 내용을 저장하고 편집기를 닫으며 터미널 화면으로 완전히 빠져나옵니다. Write(쓰기)와 Quit(종료)의 앞 글자를 딴 명령어입니다.

:q (변경 사항이 없을 때 종료하기)

파일을 열어서 구경만 했거나 아무런 내용을 수정하지 않았다면, 단순히 종료 명령인 :q만 입력하여 깔끔하게 빠져나가면 됩니다.

:q! (저장하지 않고 강제 종료하기)

설정 파일을 이것저것 만지다가 내용을 엉망으로 지웠거나, 수정한 내용을 저장하지 않고 원본 그대로 버린 채 나가고 싶을 때 사용합니다. 느낌표(!)는 시스템의 경고를 무시하고 강제로 실행하라는 의미입니다.

:w (종료하지 않고 중간 저장하기)

긴 스크립트를 작성할 때, 편집기를 끄지 않고 현재까지 쓴 내용을 디스크에 중간 저장하고 싶다면 :w만 입력하면 됩니다.

4. 실무 효율을 극대화하는 유용한 환경 설정 팁

Vim은 기본 상태로 쓰면 몇 번째 줄을 편집하고 있는지 숫자가 나오지 않아 불편합니다. 설정을 보기 좋게 바꾸려면 명령 모드에서 :을 누른 뒤 아래 명령어를 입력해 보세요.

  • :set number (또는 :set nu) : 화면 왼쪽에 행 번호(Line Number)를 표시해 줍니다. 에러 로그에서 ‘몇 번째 줄에 에러가 났다’고 할 때 디버깅하기 매우 편해집니다.
  • :set nonumber : 표시했던 행 번호를 다시 숨깁니다.

만약 서버를 켤 때마다 매번 이 설정을 입력하는 것이 귀찮다면, 사용자의 홈 디렉터리에 있는 Vim 환경 설정 파일인 ~/.vimrc 파일을 열어 아래와 같이 텍스트를 적어두면 평생 자동으로 적용됩니다.

Plaintext

set number
syntax on
set tabstop=4
  • syntax on은 코드의 문법에 따라 알록달록하게 하이라이팅 색상을 넣어주는 옵션이며, tabstop=4는 탭 키를 눌렀을 때 들여쓰기 간격을 4칸으로 고정해 주는 옵션입니다.

결론: 터미널 편집기와 친해져야 하는 이유

리눅스 환경에서 Vi와 Vim은 공기와도 같은 존재입니다. 클라우드 환경에서 nano 같은 다른 가벼운 편집기를 설치해서 쓸 수도 있지만, 시스템 장애나 복구 모드 같은 극단적인 서버 상황에서는 오직 Vi만 작동하는 경우가 많습니다.

처음에는 마우스를 쓸 수 없고 방향키 대신 알파벳 키로 커서를 이동하는 방식(h, j, k, l)이 매우 어색하고 비효율적으로 느껴질 수 있습니다. 하지만 조금만 손에 익히면 키보드에서 손을 떼지 않고 단 몇 번의 타이핑만으로 수백 줄의 코드를 복사하고 이동하는 경이로운 속도를 경험하게 됩니다. 오늘 알려드린 ESC -> : -> wq 공식과 기본 단축키들을 차근차근 연습하며 리눅스 마스터로 성장해 보시기 바랍니다.

댓글 남기기