Linux·서버·명령어 치트시트

vi/vim 명령어 치트시트: 저장·종료·입력모드·삭제·복사·검색까지

최근 업데이트: 2026년 7월 24일

vi/vim 명령어 치트시트: 저장·종료·입력모드·삭제·복사·검색까지 대표 이미지
vi/vim 명령어 치트시트: 저장·종료·입력모드·삭제·복사·검색까지를 실무 상황별로 바로 적용할 수 있게 정리했습니다.
바로 요약

vi/vim은 모드를 이해하면 훨씬 쉬워집니다. i로 입력하고, ESC로 명령모드에 돌아오고, :wq로 저장 후 종료합니다. dd, yy, p, /검색, :set nu만 익혀도 서버에서 설정 파일을 수정하는 데 필요한 기본기는 갖출 수 있습니다.

Vim 공식 문서 바로가기 vi 계열 참고 문서 A4 체크리스트 보기

vi가 어려운 이유는 명령어가 아니라 모드 때문입니다

vi나 vim을 처음 열면 대부분 당황합니다. 키보드로 글자를 입력했는데 문서에 글자가 들어가지 않거나, 저장하려고 Ctrl+S를 눌렀는데 아무 일도 일어나지 않기 때문입니다. vi는 일반 메모장처럼 항상 입력하는 편집기가 아니라 명령모드, 입력모드, 마지막 행 모드를 오가며 사용하는 편집기입니다.

따라서 vi 명령어를 외우기 전에 먼저 “지금 내가 어느 모드에 있는가”를 알아야 합니다. 명령모드에서는 i, dd, yy, p 같은 키가 편집 명령으로 동작하고, 입력모드에서는 실제 글자를 입력합니다. 마지막 행 모드는 :w, :q, :wq처럼 저장과 종료, 검색, 설정을 입력하는 곳입니다.

가장 중요한 생존 공식은 간단합니다. 입력하려면 i, 명령모드로 돌아오려면 ESC, 저장하고 종료하려면 :wq, 저장하지 않고 나가려면 :q!입니다. 이 네 가지만 알아도 서버에서 설정 파일을 열고 빠져나오지 못하는 상황은 대부분 해결됩니다.

세 가지 모드: 명령모드, 입력모드, 마지막 행 모드

명령모드는 vi를 처음 열었을 때의 기본 상태입니다. 이 상태에서는 키보드 입력이 글자가 아니라 명령으로 처리됩니다. h, j, k, l로 이동하고, x로 한 글자를 지우고, dd로 한 줄을 삭제하고, yy로 한 줄을 복사합니다. 방향키도 대개 동작하지만 서버 환경에 따라 이상하게 보일 수 있어 기본 이동키를 알아두면 좋습니다.

입력모드는 실제 글을 쓰는 상태입니다. 명령모드에서 i를 누르면 현재 커서 앞에서 입력을 시작하고, a를 누르면 커서 뒤에서 입력을 시작합니다. o를 누르면 아래에 새 줄을 만들고 입력합니다. 입력을 마치면 반드시 ESC를 눌러 명령모드로 돌아와야 저장이나 삭제 같은 명령을 쓸 수 있습니다.

마지막 행 모드는 명령모드에서 콜론(:)을 눌렀을 때 화면 아래에 명령을 입력하는 상태입니다. :w는 저장, :q는 종료, :wq는 저장 후 종료, :q!는 저장하지 않고 강제 종료입니다. 줄번호 표시를 켜는 :set nu, 검색하는 /문자열도 이 흐름에서 자주 씁니다.

처음 쓰는 사람을 위한 생존 명령어 12개

파일을 열고 수정한 뒤 저장하는 최소 흐름은 vi 파일명, i, 내용 입력, ESC, :wq입니다. 이 흐름만 익혀도 급하게 서버 설정 파일을 수정해야 할 때 사용할 수 있습니다. 저장하지 않고 나가야 한다면 ESC, :q!를 입력합니다. 변경사항이 있는데 그냥 :q를 치면 경고가 나오므로 느낌표를 붙여 강제 종료한다는 뜻을 알아두세요.

글자를 조금 지울 때는 x, 단어를 지울 때는 dw, 한 줄을 지울 때는 dd를 씁니다. 여러 줄을 지우려면 5dd처럼 숫자를 앞에 붙입니다. vi에서 dd는 단순 삭제처럼 보이지만 실제로는 버퍼에 들어가므로 p로 다시 붙여넣을 수 있습니다. 그래서 잘라내기와 비슷하게 생각하면 이해가 쉽습니다.

한 줄 복사는 yy, 붙여넣기는 p입니다. 3yy는 세 줄 복사, 3dd는 세 줄 잘라내기입니다. 실수했을 때는 u로 되돌립니다. 윈도우의 Ctrl+Z처럼 완전히 같지는 않지만 방금 한 작업을 취소하는 데 가장 먼저 떠올릴 명령입니다.

파일 끝으로 가려면 G, 줄의 맨 앞은 0, 줄의 맨 뒤는 $입니다. 검색은 /문자열을 입력하고 Enter를 누릅니다. 다음 검색 결과로 이동할 때는 n을 사용합니다. 줄번호를 켜려면 :set nu, 끄려면 :set nonu입니다.

vi/vim 명령어 치트시트: 저장·종료·입력모드·삭제·복사·검색까지 보조 설명 이미지
핵심 단축키와 상황별 선택 기준을 한 장으로 정리해두면 같은 검색을 반복하지 않아도 됩니다.

실무 흐름 예시: 설정 파일 열기부터 저장까지

서버에서 설정 파일을 수정한다고 가정해보겠습니다. 터미널에서 vi config.txt를 입력하면 파일이 열리고 명령모드로 시작합니다. 방향키나 j, k로 수정할 위치로 이동한 뒤 i를 눌러 입력모드로 들어갑니다. 필요한 내용을 수정한 뒤 ESC를 눌러 명령모드로 나옵니다.

잘못 쓴 줄을 통째로 없애야 한다면 커서를 그 줄에 두고 dd를 누릅니다. 삭제한 줄을 다시 붙이고 싶으면 원하는 위치로 이동해 p를 누릅니다. 여러 줄을 옮길 때는 3dd, p처럼 숫자를 붙이면 빠릅니다.

내용을 저장하고 종료하려면 ESC를 누른 뒤 :wq를 입력하고 Enter를 누릅니다. 저장은 했지만 계속 편집하려면 :w만 입력합니다. 수정한 내용을 버리고 나가려면 :q!를 입력합니다. 이 세 가지를 헷갈리지 않는 것이 vi 초보의 첫 번째 목표입니다.

수정 전후 위치를 찾기 어렵다면 :set nu로 줄번호를 켜세요. 에러 메시지에 42번째 줄이라고 나올 때 :42를 입력하면 바로 해당 줄로 이동할 수 있습니다. 긴 설정 파일에서는 검색과 줄번호가 시간을 크게 줄여줍니다.

명령어를 외우는 순서: 저장/종료 → 입력 → 삭제/복사 → 검색

처음부터 모든 vi 명령어를 외우려고 하면 금방 포기합니다. 먼저 저장과 종료 명령을 외우세요. :w, :q, :wq, :q! 네 개만 알아도 공포가 줄어듭니다. 그 다음 i, a, ESC로 입력모드 전환을 익힙니다.

세 번째 단계는 삭제와 복사입니다. x, dd, yy, p, u를 익히면 대부분의 짧은 파일 수정이 가능합니다. 여기까지 익숙해진 뒤 5dd, 3yy처럼 숫자 조합을 붙이면 작업 속도가 빨라집니다.

네 번째 단계는 이동과 검색입니다. G, 0, $, /검색어, n, :set nu를 쓰면 긴 파일에서 길을 잃지 않습니다. 서버 설정, 로그 확인, 배포 스크립트 수정처럼 실무 상황에서는 이 단계가 중요합니다.

마지막으로 고급 명령은 필요할 때만 찾아보면 됩니다. 치환, 매크로, 여러 파일 편집, 레지스터는 강력하지만 초보자가 매일 쓰는 명령은 아닙니다. 이 글은 “서버에서 빠져나오고 수정할 수 있는 수준”을 목표로 합니다.

자주 하는 실수와 해결법

첫 번째 실수는 입력모드와 명령모드를 헷갈리는 것입니다. 글자를 입력했는데 이상한 동작을 하거나, 저장 명령이 글자로 찍힌다면 현재 모드를 잘못 이해한 것입니다. 우선 ESC를 한두 번 눌러 명령모드로 돌아간 뒤 다시 시도하세요.

두 번째 실수는 저장하지 않고 종료하려다 막히는 것입니다. 변경사항이 있으면 :q만으로는 종료되지 않습니다. 저장하려면 :wq, 버리려면 :q!입니다. 느낌표는 강제로 실행한다는 의미이므로 정말 버려도 되는지 확인하고 사용하세요.

세 번째 실수는 Ctrl+C, Ctrl+S 같은 일반 편집기 습관입니다. 환경에 따라 동작할 수도 있지만 vi에서는 기본 흐름이 다릅니다. 특히 Ctrl+S는 터미널 출력을 멈추는 경우가 있어 화면이 얼어붙은 것처럼 보일 수 있습니다. 이때는 Ctrl+Q로 풀리는 경우가 있습니다.

네 번째 실수는 붙여넣기 후 들여쓰기가 망가지는 것입니다. 긴 코드를 붙여넣을 때는 터미널과 vim 설정에 따라 자동 들여쓰기가 과하게 적용될 수 있습니다. 중요한 설정 파일이라면 붙여넣기 전 백업을 만들고, 변경 후 diff나 설정 검사 명령으로 확인하세요.

연습 순서: 실제 서버 파일을 만지기 전에 작은 파일로 손에 익히세요

vi 명령어는 읽기만 하면 오래 기억되지 않습니다. 처음에는 중요한 설정 파일을 바로 열지 말고 임시 파일을 만들어 연습하는 편이 안전합니다. 예를 들어 터미널에서 vi practice.txt를 열고 i로 입력, ESC로 복귀, :wq로 저장 종료하는 흐름을 몇 번 반복하세요. 그 다음 dd, yy, p, u를 써보면 삭제와 복구 감각이 생깁니다.

두 번째 연습은 검색과 줄번호입니다. 여러 줄을 적어놓고 :set nu로 줄번호를 켠 뒤 /검색어로 원하는 단어를 찾아보세요. 에러 로그나 설정 파일은 보통 “몇 번째 줄” 또는 “어떤 키워드”를 기준으로 수정하므로, 줄 이동과 검색이 익숙하면 실무 시간이 크게 줄어듭니다.

세 번째 연습은 저장하지 않고 나가기입니다. 일부러 내용을 수정한 뒤 ESC, :q를 눌러 경고가 나오는지 확인하고, :q!로 버리고 나가보세요. 이 경험을 해두면 실제 서버에서 잘못 건드린 파일을 저장하지 않고 빠져나오는 판단을 더 침착하게 할 수 있습니다.

마지막으로 팀에서 자주 쓰는 명령만 짧은 치트시트로 남겨두세요. 모든 vim 기능을 외우는 것보다 “입력, 저장, 종료, 삭제, 복사, 검색, 줄번호” 정도를 빠르게 떠올리는 것이 초보에게 훨씬 실용적입니다. 이 글의 체크리스트를 A4로 출력해 모니터 옆에 붙여두면 SSH 작업 중 다시 검색하는 시간을 줄일 수 있습니다.

한눈에 보는 표

상황추천 방법주의할 점
입력 시작i / a / oESC로 반드시 명령모드 복귀
저장·종료:w / :q / :wq / :q!변경사항 버릴 때만 :q!
삭제x / dw / dd / 5dddd는 p로 복구 가능
복사·붙여넣기yy / 3yy / p붙일 위치는 커서 아래 기준
검색·이동/문자열 / n / G / 0 / $ / :set nu긴 파일에서 필수

FAQ

vi에서 빠져나오려면 어떻게 하나요?

ESC를 누른 뒤 저장하고 나가려면 :wq, 저장하지 않고 나가려면 :q!를 입력하고 Enter를 누르세요.

입력이 안 되고 이상한 명령만 실행됩니다.

명령모드에 있는 상태일 수 있습니다. i를 눌러 입력모드로 들어가고, 편집 후 ESC로 다시 명령모드로 돌아오세요.

한 줄 삭제와 복사는 무엇인가요?

한 줄 삭제는 dd, 한 줄 복사는 yy, 붙여넣기는 p입니다. 5dd처럼 숫자를 앞에 붙이면 여러 줄에 적용됩니다.

줄번호는 어떻게 켜나요?

명령모드에서 :set nu를 입력하면 줄번호가 보입니다. 끄려면 :set nonu를 입력합니다.

vim과 vi는 같은 건가요?

vim은 vi 계열의 확장 편집기입니다. 기본 명령은 상당수 비슷하지만 배포판과 설정에 따라 기능 차이가 있습니다.

결론

이 글은 검색해서 한 번 보고 끝내는 글이 아니라, 필요할 때 다시 열어 확인하는 실무형 체크리스트로 설계했습니다. 자주 쓰는 항목은 즐겨찾기해두고, 체크리스트 파일은 팀원이나 가족에게 공유해도 좋습니다.