04 Vim 기초 - Insert Mode 진입과 문자 입력하기

 

[The Vim Way] 02 Vim 기본조작 - Vim 의 4가지 모드

Vim 의 네 가지 모드 Vim 에는 4가지 모드가 있다. 일단 4가지 모드가 있다는 사실만 인지하고 넘어가자. Normal Mode Insert Mode Command Mode Visual Mode 현재 어떤 모드인지는 에디터 하단 Status Bar 에서..

coldmater.tistory.com

Vim 의 4가지 모드에서 살펴보았듯, Vim 에는 문서에 직접 타이핑을 해 넣을 수 있는 Insert 모드가 존재한다. 한국어로는 삽입모드라고 할 수 있겠다.

Vim Insert Mode

Vim Insert Mode에서 할 수 있는 일은 다음과 같다.

  • 문서에 문자열을 타이핑하여 넣을 수 있다.

일반 워드프로세서와 Vim 이 다른 점

보통 '문서 편집'이라면 키보드로 어떤 문자열을 입력하는 것이 기본 기능일 것이다. 가령 MS-Word 나 한글과컴퓨터-한글 과 같은 프로그램을 켜면 하얀 바탕에 커서가 반짝이고, 키보드를 타건하는 순간 우리가 누른 키에 해당하는 문자가 입력된다.

 

하지만 Vim 은 켜자마자 Normal 모드이고, 이 모드에서는 타이핑하여 문자를 입력할 수 없다. (Normal Mode 의 주 역할은 주로 커서의 이동과 특정 명령의 수행이다.) 일반 워드프로세서와 같이 문자열을 입력할 수 있는 상태로 변경하고자 한다면 Insert Mode 로 진입해야 한다.

Vim 문자 입력하기

Vim 에서 문자를 입력하는 방법

Insert Mode 를 탐험하기 전에 간단히 Insert Mode 가 동작하는 모습을 살펴보자.

  1. (Normal Mode 에서) i 키로 Insert Mode 로 진입한다.
  2. 원하는 문자열을 타이핑한다.
  3. Esc 키로 Normal Mode 로 빠져나간다.

Insert Mode 구분하기

Status Bar 로 확인하기

아래 스크린샷처럼, i 키와 esc 키를 누를 때 하단 status 에 --NORMAL--, --INSERT-- 처럼 현재의 상태가 바뀐 것을 확인할 수 있다. 

vim insert mode 문자열 입력하기

Cursor 모양으로 확인하기

대중적인 IDE, 텍스트(코드) 에디터들에서는 스크린샷처럼 Normal Mode 에서는 두꺼운 커서를, Insert Mode 에서는 얇은 커서임을 확인할 수 있다. 얇은 커서는 현재 문자열이 입력될 정확한 위치를 지시해주시기 때문에 (글자 자체를 덮는) 두꺼운 커서보다 유용하다.

그러나, 간혹 레거시 시스템에서 Vim 을 사용하게 되면, Normal Mode 와 Insert Mode 에서의 커서가 서로 다르지 않는  경우(둘 다 두꺼운 커서로 표시된다.)를 볼 수 있는데, 그런 경우 하단 status bar 를 통해서 현재 어떤 상태인지 확인할 수 있다.

Vim Insert Mode 진입하기

Vim 의 Insert Mode 는 위에서 설명했듯, 문자열을 타이핑하기 위한 모드이다. 그런데, 위에서 살펴본 i 키 말고도 Insert Mode 로 진입할 수 있는 여러가지 방법들을 제공한다. 여기서는 주요한 방법들을 몇가지 살펴보도록 하자.

i - 커서 바로 왼쪽에 입력하기

  • i 키를 눌러 현재 위치한 커서의 왼쪽에서 Insert Mode 를 시작한다.

아래 스크린샷에서 괄호에 있던 두꺼운 커서 왼쪽으로 얇은 커서가 생긴 것을 확인할 수 있다. i 가 insert 를 의미한다고 볼 수 있다.

i 키를 눌러 커서 왼쪽에서 insert mode 시작하기

이제 vim 에서 insert mode 에 진입할 수 있는 방법을 알아보았다. 하지만, 이것만으로 충분하지 않다. vim 은 당신의 생각보다 강력하다. 다음에서 insert mode 로 진입하는 다양한 방법들을 알아보자. 이를 통해 상황에 맞게 효율적으로 insert mode 로 진입이 가능하다.

 

i 만을 Insert Mode 의 진입방법으로 알고 있는 사람이라면, 원하는 위치에서 Insert Mode 를 시작하기 위해 Normal 모드에서 커서를 복잡하고 힙겹게 이동하는 과정을 거쳐야만 한다. (또는 insert 모드를 시작한 뒤 방향키로 커서를 움직일 수도 있지만, 이는 권장하지 않는다. Normal Mode 에서 훨씬 강력한 방법으로 커서를 이동시킬 수 있는 방법을 대신 사용하는 편이 훨씬 효율적이기 때문이다.)

a - 커서 바로 오른쪽에 입력하기

  • a 키를 눌러 현재 위치한 커서의 오른쪽에서 Insert Mode 를 시작한다.

아래 스크린샷에서 괄호에 있던 두꺼운 커서 오른쪽으로 얇은 커서가 생긴 것을 확인할 수 있다. a 가 append 를 의미한다고 볼 수 있다.

a 키를 눌러 커서 오른쪽에서 insert mode 시작하기

I - 줄의 맨 앞에 입력하기

  • I(shift + i) 키를 눌러 현재 커서가 위치한 줄의 맨 앞에서 Insert Mode 를 시작한다.

눈치챘겠지만 i 의 대문자인 I 커맨드는 i 의 의미를 확장(대문자)하여 '가장' 왼쪽에 삽입을 시작한다.

💡 Insert Mode 로 진입하는 명령어(a, i, c, o, s)는 모두 그 알파벳의 대문자에 대응하는 명령어(A, I, C, O, S)가 존재한다. 이 대문자 명령어 또한 모두 Insert Mode 로의 진입하는 기능을 수행하며, 대부분 소문자 명령어의 의미를 확장한 명령을 수행한다. (e.g. a 는 커서 왼쪽에 삽입, A 는 줄 맨 왼쪽에 삽입)

현재 줄의 맨 앞에서 insert mode 시작하기

A - 줄의 맨 뒤에 입력하기

  • A(shift + a) 키를 눌러 현재 커서가 위치한 줄의 맨 뒤에서 Insert Mode 를 시작한다.

눈치챘겠지만 a 의 대문자인 A 커맨드는 a 의 의미를 확장(대문자)하여 '가장' 오른쪽에 삽입을 시작한다.

현재 줄의 맨 뒤에서 insert mode 시작하기

o - 아래 줄에 새 줄을 삽입한 뒤 입력하기

  • o 키를 눌러 현재 커서가 위치한 줄의 바로 아래 입력을 시작한다.

새로운 줄을 입력할 때 보통 커서를 줄의 맨 오른쪽에 위치시킨 뒤 엔터를 치곤 한다. 이 방법으로 그 즉시 커서 밑 줄에 새로운 줄을 삽입하고 입력을 시작할 수 있다. 보통 자동으로 들여쓰기가 되어있는데, 탭 간격은 설정을 따른다.

커서의 바로 밑에 새로운 줄을 삽입하고 insert mode 로 진입하기

O - 위 줄에 새 줄을 삽입한 뒤 입력하기

  • O(shift + o) 키를 눌러 현재 커서가 위치한 줄의 바로 아래 입력을 시작한다.

눈치챘겠지만, o 커맨드의 반대 의미로 생각할 수 있겠다.

커서의 바로 위에 새로운 줄을 삽입하고 insert mode 로 진입하기

 s - 삭제하고 입력하기

  • s 키를 눌러 현재 커서가 위치의 문자(또는 선택영역)를 삭제하고 입력을 시작한다.

말로 설명하기는 조금 애매한 부분이 있으니 스크린샷을 참고하면 명확히 이해할 수 있을것이다. 현재 커서의 문자를 삭제하고 바로 insert mode 를 시작한다. 

커서 위치의 문자를 삭제하고 insert mode 로 진입하기

추후에 Visual Mode 를 사용하여 특정 범위를 지정한 뒤, 해당 범위를 삭제하고 삽입하는 것도 s 명령어로 가능하다.

S - 현재 줄을 전부 삭제하고 입력하기

  • S(shift + s) 키를 눌러 현재 커서가 위치한 줄을 전부 삭제하고 입력을 시작한다.

현재 커서가 위치한 줄을 전부 삭제하고 insert mode 로 진입하기

C - 현재 커서의 오른쪽 전부를 삭제하고 입력하기

  • C(shift + c) 키를 눌러 현재 커서가 위치한 오른쪽 전부를 삭제하고 입력을 시작한다.

현재 커서 오른쪽의 모든 내용을 지우고 insert mode 로 진입하기

c - vim c 커맨드는?

c 는 insert mode 로 진입하는 커맨드이기는 하지만, c 키를 누른 뒤에 별도의 '목적어'에 해당하는 명령어(이 경우 vim 에서는 operator 라고 함)를 추가로 입력해주어야 한다. 이러한 특징을 가진 오퍼레이터들은 추후 포스팅에서 별도로 다루도록 한다. ('목적어'라는 표현에 의아할 독자들이 있을것이라고 생각한다. 그렇다. vim 은 컴퓨터가 그렇듯, '언어적으로' 문서를 편집할 수 있는 툴이기도 하다. e.g. Normal Mode 에서 vim 커맨드 `c3w` 는 다음을 의미한다. "현재 커서로부터 3 단어 지우고 insert mode 로 진입해줘.")

Vim Normal Mode 진입

Vim 에서는 특정 모드에서 Normal Mode 로 빠져나가야할 일이 빈번하게 일어난다. 설명을 하지 않더라도, Esc 명령이 그 기능을 수행한다는 것은 이미 눈치채고 있을 것이다. 하지만 Esc 에 손가락을 올리는것은 Home row 에서 손가락이 많이 벗어난다는 것을 의미한다. 그래서 대안으로 Esc 를 대신할 수 있는 조합키가 존재한다. `Ctrl + [` 로 esc 대신 Normal Mode 로 빠져나갈 수 있다.


이번에는 Vim 에서 Insert Mode 로 진입하는 다양한 방법들을 알아보았다. 가끔 vim 을 쓰는 사람이라면, i 키만 알아두어도 충분할 것이다. 하지만, 코딩을 하다보면, 위에서 소개한 모든 방법들을 사용해야하는 적절한 상황들을 분명히 만나게 될 것이다. 

 

다음번에는 Vim 의 Normal Mode 에서의 주요한 커맨드(명령)와 오퍼레이터들을 알아보도록 하자.

반응형

Designed by JB FACTORY