Vi 또는 Vim 편집기를 종료하는 방법

vi 편집기는 처음 접하는 사용자에게는 다소 혼란스러울 수 있습니다. 이 프로그램을 실수로 실행했다면, 빠져나오기 위해서는 특별한 ‘탈출’ 방법이 필요합니다. 이 글에서는 Linux, macOS 또는 다른 Unix 계열 시스템에서 vi나 vim을 종료하는 방법을 안내합니다.

간단한 해결책

vi 또는 vim 편집기 내에서 변경 사항을 저장하거나 저장하지 않고 종료하는 빠른 방법은 다음과 같습니다.

우선, Esc 키를 여러 번 눌러 편집기를 명령 모드로 전환합니다. 그 다음, :q!를 입력하고 Enter 키를 누르면, 변경 사항이 저장되지 않고 vi가 종료됩니다. 변경 사항을 저장하려면 :wq를 대신 입력하면 됩니다.

만약 Linux 명령줄에 대해 더 깊이 알고 싶다면, vi의 작동 방식과 종료 방법이 왜 이렇게 특이한지 이해해야 합니다. vi는 매우 중요하고 강력한 도구이며, 학습에 투자할 가치가 충분합니다.

vi: 어디에나 있는 편집기

vi는 거의 모든 시스템에 존재하기 때문에, 언젠가는 마주칠 가능성이 큽니다. vi 편집기 안에서 자신을 발견할 수도 있고, 다른 사람의 Linux 컴퓨터를 살펴봐야 할 때도 있습니다. 예를 들어, crontab -e와 같은 명령을 실행하면 vi가 나타날 수 있습니다. 놀랍게도, 어떤 사람들은 crontab의 기본 편집기를 vi로 설정해 놓기도 합니다.

또한, 원격 SSH 세션을 통해 시스템을 관리할 때 vi만이 유일한 편집기일 수 있으며, 사용자의 .bashrc 파일을 수정해야 할 수도 있습니다.

vi를 실행하고 파일을 여는 방법은 간단합니다. vi, 한 칸 띄고, 파일 이름을 입력한 후 Enter 키를 누르면 됩니다. 실행되는 프로그램은 vi일 수도 있고, ‘개선된 vi’인 vim일 수도 있습니다. Linux 배포판에 따라 다르지만, Ubuntu의 경우에는 vim이 기본적으로 사용됩니다. 이 글에서 설명하는 모든 방법은 vim에도 똑같이 적용됩니다.

vi .bashrc

vi와 다른 편집기의 가장 큰 차이점은 vi를 시작하자마자 텍스트를 입력할 수 없다는 점입니다. vi는 ‘모달 편집기’이기 때문입니다. 편집 작업은 ‘삽입 모드’에서 이루어지고, 명령 실행은 ‘명령 모드’에서 이루어집니다. vi는 명령 모드로 시작합니다.

삽입 모드와 명령 모드라는 개념에 익숙하지 않다면 당황스러울 수 있습니다. 명령 모드에서 실행되는 많은 명령들은 현재 편집 중인 파일에 영향을 줄 수 있습니다. 만약 명령 모드 상태에서 실수로 텍스트를 입력하려고 시도하면 파일이 망가질 수 있습니다. 입력하는 키의 일부가 명령으로 인식되어, 줄이 삭제되거나, 텍스트가 지워지거나, 커서가 멋대로 움직일 수 있습니다.

그러다 보면 편집기를 어떻게 종료해야 할지 막막해지고, 파일은 점점 엉망이 되며, 무작위로 들리는 경고음은 당신을 더 혼란스럽게 만들 수 있습니다.

명령 모드와 삽입 모드

vi에서 원하는 작업을 수행하려면 적절한 모드로 전환해야 합니다.

명령 모드는 vi가 시작될 때의 기본 모드입니다. 처음에는 잘 모르고 바로 입력을 시작하려 할 수도 있습니다. 그러나 i 키 또는 삽입 모드를 활성화하는 다른 10개의 키(a, A, c, C, I, o, O, R, s, S)를 누르면 갑자기 텍스트가 입력됩니다. 즉, 이제 삽입 모드에 들어간 것입니다.

이 상태에서 방향키를 누르면, 텍스트가 입력되지 않고 A, B, C, D와 같은 문자가 파일 맨 위에 새 줄에 표시되는 것을 볼 수 있습니다.

괜찮습니다. 저희가 도와드리겠습니다. 방법만 알면 매우 간단합니다. 다음 두 가지 키 입력을 기억하십시오. Esc 키는 명령 모드로 전환하고, “i” 키는 삽입 모드로 전환합니다.

편집기를 종료하려면 명령 모드에 있어야 하며 올바른 명령을 입력해야 합니다.

명령 모드에서 탈출하기

명령 모드로 들어가려면 Esc 키를 누릅니다. 눈에 보이는 변화는 없을 겁니다. 몇 번 더 누르십시오. Esc 키를 누를 때마다 경고음이 들린다면 명령 모드에 있는 것입니다. 이 경고음은 “Esc 키를 더 이상 누르지 마십시오. 이미 명령 모드에 있습니다.”라는 의미입니다. Esc 키를 누를 때 경고음이 들리는 것이 정상입니다.

공백 없이 콜론(:), 문자 q, 그리고 느낌표(!)를 입력합니다. 이 세 문자가 터미널 화면 하단 맨 왼쪽에 나타나야 합니다. 만약 그렇지 않다면, 경고음이 들릴 때까지 Esc 키를 누르고 다시 시도해 보세요. 다음처럼 표시된다면 Enter 키를 누릅니다.

:q!

이 명령에서 q는 quit(종료)의 약자입니다. 느낌표는 강제성을 의미하므로 “강제로 종료하라!”와 같은 의미입니다. vi에서 이런 명령을 내리면 약간 안심이 될 수도 있습니다.

느낌표는 또한 파일에 대한 변경 사항을 저장하지 않도록 vi에 지시합니다. 만약 vi에서 실수를 했고 무엇을 하고 있는지 모른다면, 당신이 저지른 실수를 저장하고 싶지 않을 것입니다.

명령줄로 돌아오면 파일이 변경되지 않았는지 다시 확인할 필요가 있습니다. 다음 명령을 사용하여 확인할 수 있습니다.

cat .bashrc | less

vi를 종료할 때 “최근 변경 사항을 저장하지 않았습니다.”라는 메시지가 나타나면, 명령에 느낌표를 빠뜨린 것입니다. vi는 종료되거나 손실되는 것을 막기 위해 저장할 기회를 제공합니다. 이럴 때는 다시 :q! 명령을 느낌표와 함께 실행하여 vi를 종료하고 변경 사항을 취소하십시오.

변경 사항 저장하기

파일에 대한 변경 사항에 만족한다면, :wq (저장하고 종료) 명령을 사용하여 종료하고 변경 사항을 저장할 수 있습니다. 변경 사항을 파일에 저장하기 전에 정말로 저장하고 싶은지 다시 한번 확인하십시오.

콜론(:), 문자 w (저장), 그리고 문자 q (종료)를 입력합니다. 터미널 왼쪽 하단에 이 명령이 보이면 Enter 키를 누르십시오.

:wq

학습 곡선의 가치

vi를 사용하는 것은 피아노를 연주하는 것과 다소 비슷합니다. 그냥 앉아서 바로 사용할 수는 없습니다. 연습이 필요합니다. 무언가를 편집해야 한다는 압박감을 느낄 때, 처음부터 배우려고 하는 것은 올바른 방법이 아닙니다. 마치 중요한 연주회 직전에 처음으로 피아노 앞에 앉는 것과 마찬가지입니다.

vi의 대부분 기능은 일반적인 편집 작업을 수행하는 여러 키 조합으로 이루어져 있습니다. 훌륭하지만, 이러한 조합을 암기하고, 연습하고, 근육 기억의 일부로 만들지 않는 한 vi의 이점을 제대로 누릴 수 없습니다.

그 전까지는 중요한 파일을 vi로 편집하고 있다면 :q! 명령을 사용하여 우아하게 종료하는 것이 좋습니다. 그러면 중요한 파일이 당신에게 감사할 것입니다.