배경
📟
개발 •  • 읽는데 9분 소요

Vimtutor를 이용해 Vim 명령어를 배워보자

알아두면 유용하지만 자주 까먹게 되는 Vim 명령어를 배워봅시다.

#Etc


Vim 나가기 개발 뉴비에게는 Vim 종료를 하는 것부터 시련이다

제가 MacOS로 처음 개발을 하면서 당황스러웠던 상황 중 하나가 바로 처음으로 Vim을 마주했을 때입니다. 터미널에서 Git 명령어를 썼는데 갑자기 뜨는 알 수 없는 글자가 화면에 떠서 종료하고 싶은데… 명령어를 몰라 나갈 수가 없었던 곤란한 상황이 떠오르네요.

이처럼 MacOS와 같은 유닉스 계열 운영체제에서 개발을 하게 되면 터미널 환경에서 텍스트를 수정할 일이 많이 생기곤 합니다. 물론 요즘은 VSCode, Webstorm 같은 코드 에디터나 IDE가 잘 되어 있어서 이를 활용할 수도 있긴 합니다만, 운영체제의 기본 텍스트 에디터가 Vim 이다보니 부득이하게 사용해야만 하는 경우가 있죠.

그렇기 때문에 다른 툴을 쓴다고 해도 Vim 같은 경우는 어느 정도 사용할 줄은 알아야 합니다. 다행이게도 Vim에는 Vim의 기본적인 방법을 가르쳐주는 대화형 튜토리얼 프로그램인 Vimtutor가 내장되어 있습니다.

Vim Vim만 잘 써도 생산성이 늘어난다고…는 하는데 저는 아직 그 정도 경지에 이르지는 못했습니다

오늘은 Vimtutor에서 제공해 주는 튜토리얼을 한번 쭉 훑어보면서 Vim 명령어를 다시 상기해 보려고 합니다. 이번 포스트를 통해 Vim 사용법이 익숙하지 않으신 분 들에게 도움이 되었으면 좋겠습니다.

Vimtutor 실행하기

Vimtutor는 Vim에 내장되어 있기 때문에 Vim이 설치되어 있다면 바로 사용할 수 있습니다.

vimtutor

Vimtutor 실행

위 사진처럼 화면이 나오면 성공입니다.

Vimtutor 따라하기

이제부터는 Vimtutor를 따라하면서 Vim 명령어를 배워보겠습니다. 저도 직접 따라하면서 그 과정을 GIF로 캡쳐해 보았습니다.

커서 이동하기

  • 일반키: kjhl
  • 방향키:

커서 이동 이게 키보드 배열이 일자 형태라 적응이 은근 빡시다

커서를 상하좌우로 이동시킬 때는 k, j, h, l를 사용합니다. 저는 사실 방향키를 더 많이 쓰는 것 같긴 한데 튜토리얼이니까 요 방식대로 익혀보겠습니다.

Vim 종료

  • 저장하지 않고 종료하기: ESC:q!ENTER
  • 저장하고 종료하기: ESC:wqENTER

Vim 종료 초보자라면 무조건(?) 알아야 할 종료하기 명령어

Vim을 종료하려면 ESC를 눌러 명령 모드로 빠져나온 후 :, q 를 누르면 됩니다. qquit 의 의미를 나타냅니다.

Vim 종료 수정 사항이 있을 때는 Vim을 그냥 종료할 수 없다고 경고가 뜬다

뒤에 덧붙여진 !는 명령어 강제 실행을 의미하는데요, 원래 Vim에서 수정 사항이 있을 때 종료 명령어를 입력하면 종료가 되지 않고 경고 메시지가 뜨거든요. 이것을 무시하고 강제 실행을 위해 !를 붙여준 것입니다.

만약 저장이 필요하다면 :wq 명령어를 이용하여 수정된 내용을 저장할 수 있습니다. wwrite 의 의미를 나타냅니다.

텍스트 삭제

  • 한 글자: x

x 한 글자씩 삭제가 된다

현재 커서 위치의 텍스트를 삭제하려면 명령 모드에서 x를 누르면 됩니다. 한 글자씩 삭제되는 것을 확인할 수 있습니다.

텍스트 삽입과 추가

  • 커서 앞에 삽입: i
  • 해당 라인 맨 앞에 삽입: I
  • 커서 뒤에 추가: a
  • 해당 라인 맨 뒤에 추가: A

Vim 종료 I는 INSERT, A는 APPEND

텍스트를 삽입하려면 i를 눌러 입력 모드로 들어간 후 원하는 텍스트를 입력하면 됩니다. ESC를 눌러 명령 모드로 돌아오면 삽입한 텍스트가 반영됩니다. 커서의 위치가 바뀌지 않고 텍스트가 삽입되는 것을 확인할 수 있습니다.

대문자 I로 입력하면 커서가 위치한 라인의 맨 앞에 텍스트를 추가할 수 있습니다.

텍스트 추가 이처럼 대문자와 소문자에 따라 기능이 조금씩 달라지는 경우가 많다

ai와 유사한데, 입력 커서의 위치가 그다음으로 이동한다는 점이 다릅니다.

대문자 A로 입력하면 커서가 위치한 라인의 맨 뒤에 텍스트를 추가할 수 있습니다.

파일 생성과 편집

  • vim 파일명 ENTER

파일 편집 직접 파일 편집이 필요할 때 유용하다

터미널에서 vim <파일명>을 입력하면 파일을 생성하고 편집할 수 있습니다. 해당 파일의 이름이 이미 존재한다면 해당 파일을 편집하고, 없으면 새로 생성합니다.

파일 생성 잘 나온다

위 명령어의 결과물로 tutorial 이라는 이름의 파일이 생성된 모습입니다.

텍스트 삭제에 반복 적용하기

  • d대상
  • 한 단어(공백 포함): w
  • 한 단어(공백 미포함): e
  • 현재 커서에서 라인 마지막까지: $

dw

ddelete 를 나타내며, 삭제의 대상을 함께 지정할 수 있습니다. wwordeend 를 의미하고, $는 정규표현식에서의 문장 마지막까지를 나타내는 기호입니다.

이러한 대상 범위를 잘 이용하면 단어 단위와 라인 단위로 텍스트를 삭제할 수도 있는데, 앞으로 설명할 명령어에서도 대상을 지정하는 명령어가 꽤 있으니 외워두는 것이 필요합니다.

반복 적용하기

  • 횟수명령대상
  • 명령횟수대상
  • 문장 맨 처음으로 커서 이동: 0
  • 문장 맨 뒤로 커서 이동: $
  • 한 단어 앞으로 커서 이동: b

반복 적용 커서를 여러 단어 단위로 옮기는 모습

위에서 설명했듯이 반복 적용의 경우에는 [횟수] 명령 대상 또는 명령 [횟수] 대상 의 형태로 입력합니다. 별도의 명령어가 없는 경우에는 커서 이동에 대한 반복으로 적용됩니다.

삭제에 반복 적용하기

  • d숫자범위

반복 적용

삭제의 경우에는 d를 먼저 입력한 후 숫자와 범위를 입력해 반복적으로 적용할 수 있습니다.

라인 전체 삭제하기

  • 숫자dd

반복 적용

라인 전체를 삭제하려면 d를 두 번 입력하면 됩니다. 이때 숫자를 입력하면 해당 숫자만큼 반복적으로 적용됩니다.

실행 취소와 다시 실행

  • 실행 취소: u
  • 다시 실행: Ctrl+r

실행 취소와 다시 실행

uundo 를 의미하며, 실행 취소를 할 수 있습니다. Ctrl+rredo 를 의미하며, 다시 실행을 할 수 있습니다.

복사와 붙여넣기

  • 복사: y대상
  • 붙여넣기: p

붙여넣기

yyank 를 의미하며, Vim 버퍼에 텍스트를 복사할 수 있습니다. y 뒤에 대상을 붙일 수도 있고, yy를 이용하면 라인 전체를 복사할 수 있습니다. dd를 이용하면 라인 전체를 삭제하여 버퍼에 저장할 수 있구요.

ppaste 를 의미하며, Vim 버퍼에 복사된 텍스트를 붙여 넣을 수 있습니다.

텍스트 대체, 변환, 치환

  • 한 글자: r대체할 텍스트
  • 대상 지정: c대상대체할 텍스트
  • 현재 라인 치환: :s/${찾을 텍스트}/${바꿀 텍스트}/g
  • 파일 전체 치환: :%s/${찾을 텍스트}/${바꿀 텍스트}/g
  • 특정 범위 치환: :${시작 라인},${종료 라인}s/${찾을 텍스트}/${바꿀 텍스트}/g

텍스트 대체

rreplace 를 의미하며, 커서가 위치한 한 글자의 텍스트를 대체할 수 있습니다.

텍스트 변환

cchange 를 의미하며, 대상을 지정하여 새로운 텍스트로 내용을 변환할 수 있습니다. w는 한 단어를, c$는 현재 커서부터 해당 라인 마지막까지를 변환합니다.

텍스트 치환

텍스트 치환은 substitute 를 의미하며, 현재 라인 혹은 전체 문서에서의 텍스트를 치환합니다. 여기서 gglobal 을 의미하며, 범위 내의 모든 텍스트를 치환한다는 의미입니다. g가 없다면 처음 마주하는 텍스트만 치환합니다.

특정 라인으로 이동하기

  • 처음으로 이동: gg
  • 마지막으로 이동: G
  • 특정 라인으로 이동: 숫자gg 또는 숫자G

특정 라인으로 이동

gggo to 를 의미하며, 처음 라인으로 이동합니다. 제일 마지막 라인으로 이동하려면 G를, 특정 라인으로 이동하려면 숫자gg 또는 숫자G를 입력하면 됩니다.

현재 커서가 위치한 라인을 확인하려면 CTRLg를 입력하면 됩니다.

텍스트 검색하기

  • /검색어ENTER
  • 다음 검색 결과로 이동: n
  • 이전 검색 결과로 이동: N

텍스트 검색

/를 입력하면 텍스트를 검색할 수 있는 창이 뜹니다. 여기에 검색어를 입력하고 ENTER키를 누르면 해당 검색어가 있는 곳으로 커서가 옮겨집니다. n을 입력하면 다음 검색 결과로 이동하고, N을 입력하면 이전 검색 결과로 이동합니다.

괄호의 짝 찾기

  • %

괄호의 짝 찾기

%를 이용하면 커서 위치의 괄호의 짝을 찾을 수 있습니다.

외부 명령 실행하기

  • :!명령어

외부 명령 실행

: !를 입력하면 외부 명령을 실행할 수 있습니다.

새 라인 추가하기

  • 현재 라인 아래에 새 라인 추가: o
  • 현재 라인 위에 새 라인 추가: O

새 라인 추가

oopen 을 의미하며, 현재 라인 아래에 새 라인을 추가합니다. O는 현재 라인 위에 새 라인을 추가합니다.

치환 모드

  • 치환 모드로 전환: R

치환 모드

Rreplace 를 의미하며, 치환 모드로 전환합니다. 치환 모드에서는 텍스트를 입력하면 기존 커서 위치의 텍스트가 대체됩니다.

마무리

cs 뭔가 원소 주기율표를 보는 듯한 기분

이처럼 Vimtutor을 이용하면 간단한 Vim 사용법을 배울 수 있습니다. 다만 Vim에서 제공하는 기능이 워낙 많다 보니 이번 포스트에서는 텍스트 편집 기능에만 초점을 맞춰 필요한 기능만 다루었고 이해를 돕기 위해 등장 순서도 조금 바꾸었습니다.

사실 Vim을 익히는 가장 좋은 방법은 직접 사용해 보는 것입니다. Vim에서 제공하는 모든 기능들을 알고 쓰기는 어렵기 때문에, 인터넷에 공유된 치트 시트를 복사해 두고 필요할 때마다 참고하는 것이 가장 좋은 방법일 듯합니다.

Vim을 대충 쓸 줄은 알았지만 이렇게 다시 한 번 설명을 읽어보니 모르는 기능들을 다시 떠올릴 수 있어서 좋았습니다. 혹시나 아직 Vim 사용법이 낯선 분들이 계시다면 한 번 Vimtutor 맛보기라도 해보세요.

이 포스트가 유익하셨다면?




프로필 사진

👨‍💻 정종윤

글 쓰는 것을 좋아하는 프론트엔드 개발자입니다. 온라인에서는 재그지그라는 닉네임으로 활동하고 있습니다.


Copyright © 2024, All right reserved.

Built with Gatsby