텍스트 에디터, vim

타키탸키·2021년 4월 7일
0

저번 시간에는 커맨드를 자유자재로 사용할 수 있는 여러 가지 꿀팁에 대해 알아봤습니다.

이번 시간에는 텍스트를 작성할 수 있도록 도와주는 도구, vim에 대해 함께 배워봅시다.

🗒 텍스트 에디터, vim

컴퓨터 활용 시, 꼭 필요한 기능 중 하나는 글을 작성하는 것입니다. 대개는 MS WORD나 한글 같은 프로그램을 사용할 텐데요. 이와 같은 프로그램들을 텍스트 에디터(Text Editior)라고 부릅니다.

그런데 이런 프로그램들은 GUI 환경에서만 활용이 가능합니다. 그럼 CLI 환경에서 활용할 수 있는 텍스트 에디터는 무엇이 있을까요? 바로 Vim입니다. Vim은 유닉스 계열에서 가장 보편적인 텍스트 에디터인데요. 일반 텍스트 에디터와는 다르게 오로지 키보드로만 활용이 가능합니다. CLI 환경에서는 Vim을 활용하지 않으면 간단한 텍스트 파일도 작성할 수 없습니다.

사실 Vim 이전에 vi라는 프로그램이 있었습니다. 이 프로그램은 1970년대 UC 버클리 대학원의 빌 조이(Bill Joy)라는 사람이 만들었습니다. 후에 브람 믈레나르(Bram Moolenaar)라는 개발자가 이 프로그램을 기반으로 여러 기능을 추가해서 현재의 vim을 만들었습니다. Vim의 어원 자체가 vi imporoved 즉, 개선된 vi에서 나온 것입니다.

🗒 vim의 4가지 사용 모드

vim에는 네 가지 사용 모드가 있습니다.

  1. 일반 모드(Normal Mode)
  2. 입력 모드(Insert Mode)
  3. 비주얼 모드(Visual Mode)
  4. 명령 모드(Command Mode)

위 표의 내용과 같이 각 모드마다 사용자가 할 수 있는 작업의 종류가 다릅니다. 사실 표 내용보다 더 많은 작업을 vim에서 할 수 있는데요. 그 중, 가장 중요한 기본 작업들만 추려서 알려드리려고 합니다.

모드가 네 가지로 나뉜다는 것은 모드에 따라 같은 키를 눌러도 다르게 해석된다는 것을 의미합니다. 예를 들어, 입력 모드에서 a를 누르면 일반 텍스트 에디터와 같이 a라는 글자가 입력되는 반면에 일반 모드에서 a를 누르면 입력 모드로 모드 전환을 합니다.

이런 특징 때문에 맨 처음 vim을 배우면 어렵다고 호소하는 사람들이 많습니다. 하지만 이 부분만 익숙해지면 vim을 배우는데 어려운 점은 없습니다.

그럼 vim에서는 사용 모드를 어떻게 바꿔서 쓸 수 있을까요?

우선, vim을 실행하면 기본적으로 일반 모드가 됩니다. 일반 모드로부터 나머지 세 모드로 전환할 수 있는 것이죠. a키를 누르면 입력 모드, v키를 누르면 비주얼 모드, 콜론(:)을 누르면 명령 모드가 됩니다. 반대로, 일반 모드로 돌아오고 싶으면 세 모드 모두 esc를 누르면 됩니다.

모드 전환에서 주의해야 할 점이 하나 있습니다. 일반 모드를 제외한 나머지 세 모드에서 다른 모드로 가려면 항상 일반 모드를 거쳐야 한다는 점입니다. 예컨대, 입력 모드에서 비주얼 모드로 넘어가려면 esc를 눌러 일반 모드로 간 다음 v키를 눌러 비주얼 모드로 넘어가야 합니다.

🗒 vim 입력 모드

vim을 실행하는 방법은 터미널에서 vim을 입력하면 됩니다. 만약 vim이 없다는 에러 메세지가 뜬다면 다음과 같이 해보시길 바랍니다.

❗ vim 설치하기

  1. 여러 커맨드 중 제일 위 커맨드를 입력하여 설치를 진행합니다
sudo apt install vim

  1. 사용자 패스워드를 입력하면 설치가 진행됩니다.
  2. 계속 진행하겠냐는 질문이 나오면 y를 누릅니다.
  3. 다시 vim 커맨드를 입력했을 때 다음과 같은 화면이 나오면 성공적으로 설치가 완료된 것입니다.

화면에는 vim이라는 이름과 함께 소개 글이 적혀 있습니다.

vim을 실행한 현재 모드는 일반 모드입니다. 텍스트를 입력할 수 있는 입력 모드로 이동해보겠습니다. 소문자 i(insert)를 누르면 입력 모드로 전환됩니다.

위 사진과 같이 왼쪽 하단에 -- INSERT --라는 문구가 뜨면 입력 모드로 전환된 것입니다. 이제 키보드로 입력을 하면 입력된 내용이 화면에 나타납니다. esc를 눌러 다시 일반 모드로 돌아갑니다. 입력 모드로 들어가면 왼쪽 하단의 문구가 사라집니다.

입력 모드로 가는 방법은 i 말고도 소문자 a(append)가 있습니다. a는 커서를 한 칸 뒤로 옮기고 입력 모드로 전환합니다. 이는 i키에는 없는 기능입니다.

현재 커서가 맨 뒤에 가 있는데요. 만약 가장 첫 번째 칸으로 커서를 옮기고 입력 모드로 가고 싶을 때에는 어떻게 해야 할까요? 왼쪽 화살표로 한 칸씩 이동한 다음 i키를 누르면 되겠죠? 그런데 좀 번거롭네요. 문장이 길어지면 더 힘들어질 거구요.

이때, 한번에 첫번째 칸으로 가서 입력 모드로 가는 방법이 있습니다. 바로 대문자 I를 입력하는 건데요.

이렇게 하면 커서가 맨 앞으로 이동하고 입력 모드로 전환됩니다. 이 상태로 문장 하나를 더 적고 엔터를 친 뒤 esc를 눌러 일반 모드로 돌아오겠습니다.

그럼 한 번에 마지막 칸으로 가서 입력 모드로 가는 방법은 무엇일까요? 대문자 A키를 누르면 됩니다.

커서가 뒤로 잘 이동되었네요. 한 문장만 더 적어줍니다.

사실 입력 모드로 갈 수 있는 키가 두 개 더 남았는데요. 소문자 o(open)와 대문자 O입니다. open개행을 의미하는데 프로그래밍에서는 '줄을 새롭게 한다'는 의미를 가지고 있습니다. 따라서, 소문자 o를 누르면 커서가 다음 줄로 넘어가면서 입력 모드로 전환됩니다.

새로운 문장 하나를 더 입력하겠습니다. 대문자 O를 입력하면 커서 위에 빈 줄이 생기고 입력 모드로 전환됩니다.

문장 하나를 더 입력하겠습니다. 완성된 내용은 다음과 같습니다.

이와 같이 입력 모드로 넘어가는 키는 여러가지가 존재합니다. 상황에 따라 필요한 키를 입력하시면 됩니다.

🗒 vim 명령 모드 - 저장하기

일반 모드에서 명령 모드로 전환하는 방법은 콜론(:)키를 누르는 것입니다. 콜론 키를 누르면 화면 하단에 콜론 키가 등장합니다. 이는 명령 모드로 전환되었다는 뜻입니다.

이 상태에서 w(write)키를 누르면 앞서 입력했던 내용이 저장됩니다. w를 누르면 하단 콜론에 w가 입력되는데요. 이때, 한 칸 띄우고 파일 이름을 적어줘야 합니다. 그 다음 엔터를 눌러줍니다.

그럼 아래와 같은 문구가 뜹니다.

이 문구를 해석하면 exercise라는 파일에 새롭게 5줄과 109자의 글자가 쓰였다는 뜻입니다. 이렇게 문구가 뜨면 성공적으로 저장이 완료된 것입니다. 저장이 완료되면 모드는 자동으로 일반 모드로 전환됩니다.

이제 vim 화면을 꺼볼 건데요. 명령 모드에서 소문자 q(quit)를 누르면 됩니다.

터미널에서 홈 디렉토리를 확인해보면 방금 생성한 exercise 파일이 잘 저장되어 있는 것을 확인할 수 있습니다.

vim을 실행할 때, 특정 파일을 열고 싶으면 vim 옆에 파일 이름을 적으면 됩니다.

vim exercise

이번에는 문장 하나를 새롭게 적고 추가된 내용을 저장해 볼 건데요. 주의할 점이 있습니다. 앞서 일반 모드를 제외한 나머지 모드로 이동하기 위해서는 꼭 일반 모드를 거쳐야 한다고 했죠? 현재는 입력 모드이기 때문에 일반 모드로 먼저 이동한 후 명령 모드로 이동해야 합니다.

이제 w를 통해 저장을 하면 되는데요. 지금은 파일 이름을 적어줄 필요가 없습니다. 이미 해당 파일이 생성되어 새로운 내용을 덮어쓰기만 하면 되기 때문입니다.

결과를 보면 방금 추가 된 한 줄로 인해 총 줄 수는 6개, 글자 수는 139개로 나타나는 것으로 보아 성공적으로 저장이 된 것을 알 수 있습니다.

그럼 저장과 동시에 vim 화면을 끄는 방법은 없을까요? 우선, vim을 나갔다가 다시 들어와서 새로운 문장 하나를 더 입력해줍시다. 그 다음 명령 모드로 이동해서 wq를 입력하면 됩니다. 이처럼 저장의 w와 나가기의 q를 같이 입력하면 저장과 동시에 vim을 나갈 수 있습니다.

다음으로 새로운 문장을 입력했는데 그 문장이 필요 없어 저장을 하지 않고 vim을 종료하고 싶으면 어떻게 해야 할까요? 무턱대고 명령 모드에서 q를 누르면 에러 메세지가 뜹니다.

에러를 해석하면 마지막 변화 이후로 수정한 내용이 저장 되지 않았다는 뜻입니다. 이때, 에러 메세지를 무시하고 그대로 저장하고 싶으면 q옆에 느낌표(!)를 붙이면 됩니다. 여기서 느낌표는 강제의 의미를 가지고 있습니다.

저장하지 않고 종료했기 때문에 다시 파일을 열어보면 새로 적은 문장은 사라집니다. 이처럼 저장하지 않고 강제로 종료하고 싶으면 :q!를 입력하면 됩니다.


이번 시간에는 CLI 환경의 텍스트 에디터, vim과 네 가지 모드 중 입력 모드와 명령 모드에 대해 알아봤습니다. 명령 모드는 좀 더 배울 내용이 남아 있는데요.

다음 시간에 이어서 명령 모드를 배우고 나머지 일반 모드와 비주얼 모드도 함께 배워보겠습니다.

* 이 자료는 CODEIT의 '유닉스 커맨드 라인' 강의를 기반으로 작성되었습니다.
profile
There's Only One Thing To Do: Learn All We Can

0개의 댓글