04 Vim 기초 - Insert Mode 진입과 문자 입력하기
- vim
- 2021. 11. 9.
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 가 동작하는 모습을 살펴보자.
- (Normal Mode 에서) i 키로 Insert Mode 로 진입한다.
- 원하는 문자열을 타이핑한다.
- Esc 키로 Normal Mode 로 빠져나간다.
Insert Mode 구분하기
Status Bar 로 확인하기
아래 스크린샷처럼, i 키와 esc 키를 누를 때 하단 status 에 --NORMAL--, --INSERT-- 처럼 현재의 상태가 바뀐 것을 확인할 수 있다.
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 를 의미한다고 볼 수 있다.
이제 vim 에서 insert mode 에 진입할 수 있는 방법을 알아보았다. 하지만, 이것만으로 충분하지 않다. vim 은 당신의 생각보다 강력하다. 다음에서 insert mode 로 진입하는 다양한 방법들을 알아보자. 이를 통해 상황에 맞게 효율적으로 insert mode 로 진입이 가능하다.
i 만을 Insert Mode 의 진입방법으로 알고 있는 사람이라면, 원하는 위치에서 Insert Mode 를 시작하기 위해 Normal 모드에서 커서를 복잡하고 힙겹게 이동하는 과정을 거쳐야만 한다. (또는 insert 모드를 시작한 뒤 방향키로 커서를 움직일 수도 있지만, 이는 권장하지 않는다. Normal Mode 에서 훨씬 강력한 방법으로 커서를 이동시킬 수 있는 방법을 대신 사용하는 편이 훨씬 효율적이기 때문이다.)
a - 커서 바로 오른쪽에 입력하기
- a 키를 눌러 현재 위치한 커서의 오른쪽에서 Insert Mode 를 시작한다.
아래 스크린샷에서 괄호에 있던 두꺼운 커서 오른쪽으로 얇은 커서가 생긴 것을 확인할 수 있다. a 가 append 를 의미한다고 볼 수 있다.
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 는 줄 맨 왼쪽에 삽입)
A - 줄의 맨 뒤에 입력하기
- A(shift + a) 키를 눌러 현재 커서가 위치한 줄의 맨 뒤에서 Insert Mode 를 시작한다.
눈치챘겠지만 a 의 대문자인 A 커맨드는 a 의 의미를 확장(대문자)하여 '가장' 오른쪽에 삽입을 시작한다.
o - 아래 줄에 새 줄을 삽입한 뒤 입력하기
- o 키를 눌러 현재 커서가 위치한 줄의 바로 아래 입력을 시작한다.
새로운 줄을 입력할 때 보통 커서를 줄의 맨 오른쪽에 위치시킨 뒤 엔터를 치곤 한다. 이 방법으로 그 즉시 커서 밑 줄에 새로운 줄을 삽입하고 입력을 시작할 수 있다. 보통 자동으로 들여쓰기가 되어있는데, 탭 간격은 설정을 따른다.
O - 위 줄에 새 줄을 삽입한 뒤 입력하기
- O(shift + o) 키를 눌러 현재 커서가 위치한 줄의 바로 아래 입력을 시작한다.
눈치챘겠지만, o 커맨드의 반대 의미로 생각할 수 있겠다.
s - 삭제하고 입력하기
- s 키를 눌러 현재 커서가 위치의 문자(또는 선택영역)를 삭제하고 입력을 시작한다.
말로 설명하기는 조금 애매한 부분이 있으니 스크린샷을 참고하면 명확히 이해할 수 있을것이다. 현재 커서의 문자를 삭제하고 바로 insert mode 를 시작한다.
추후에 Visual Mode 를 사용하여 특정 범위를 지정한 뒤, 해당 범위를 삭제하고 삽입하는 것도 s 명령어로 가능하다.
S - 현재 줄을 전부 삭제하고 입력하기
- S(shift + s) 키를 눌러 현재 커서가 위치한 줄을 전부 삭제하고 입력을 시작한다.
C - 현재 커서의 오른쪽 전부를 삭제하고 입력하기
- C(shift + c) 키를 눌러 현재 커서가 위치한 오른쪽 전부를 삭제하고 입력을 시작한다.
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 에서의 주요한 커맨드(명령)와 오퍼레이터들을 알아보도록 하자.
'vim' 카테고리의 다른 글
06 Vim 기본 - 복사하기와 붙여넣기 그리고 레지스터 (2) | 2021.11.14 |
---|---|
05 Vim 기본 - 수정, 삭제 그리고 오퍼레이터 (0) | 2021.11.13 |
03 Vim 기초 - Normal Mode 에서의 커서 이동 (2) | 2021.11.08 |
02 Vim 기초 - 4가지 모드 (0) | 2021.11.07 |
01 Vim 기초 - 실행과 종료 (0) | 2021.11.07 |