본문으로 바로가기

Vim 모드 및 간단한 명령어

category 🐧 Linux, shell, web server/✅ Vim 2020. 3. 19. 18:00

vim의 의미는 vi improved이다. 즉, vi에 여러 기능을 추가한 개선판이 vim이다.

 

Vim의 모드

 

 

같은 키를 눌러도 모드에 따라 다른 동작을 한다는 점이 포인트이다. 일반 모드가 기본이고 각 모드로 이동한다고 이해하면 편하다. 일반 모드에서 명령어를 입력하여 다른 모드로 이동하고 일반 모드로 되돌아오기 위해 ESC 키를 누르자.

 

 

 

Vim 입력 모드(i)

 

vim 파일을 저장할 경로로 이동한 후 명령어 vim을 입력하면 vim을 실행합니다.

vim

여기서 무언가를 입력하기 위해서는 입력 모드로 이동해야 하므로 i 나 a를 누르자. 입력하면 에디터 하단에 --INSERT--가 뜬다. 이 외의 모드도 하단을 확인하여 무슨 모드인지 확인할 수 있다.

 

 

그런데 i, I, a, A, o, O 는 모두 입력 모드 진입하기는 하지만 각자 어느 곳에서 커서를 시작할 것인지가 미묘하게 다르다. o(open), O는 개행, a(append) 커서 다음에, A는 커서가 있는 행 마지막에서, i(insert)는 해당 커서에, I는 커서가 있는 행 처음에 실행된다.

 

그러나 커서 이동을 일반모드에서 더 빠르고 쉽게 할 수 있다.

 

 

Vim 라인 명령 모드(:)

 

:를 입력해서 진입할 수 있다.

 

 

명령 모드에서 사용할 수 있는 몇 가지 명령어를 살펴보자.

 

:w [저장할 이름]

w는 write의 준말입니다. 저장이 성공하면 다음과 같은 문구가 뜹니다.

7L은 7줄, 139C는 139 글자(char)를 의미합니다.

 

기존에 작성한 문서를 다시 vim을 통해 수정했을 때는 파일 명을 입력할 필요 없이 :w만 해도 저장이 됩니다.

 

저장하지 않고 강제 종료 후 다시 해당 파일을 vi로 열어보려고하면 스왑 파일이 존재한다는 경고가 뜹니다.

삭제하시던, 스왑 파일을 직접 지우시던, 복구 하시던 편하신 방법으로 하시면 됩니다. 그냥 지우십쇼 ㅎ..

 

 

 

 

:q

vim을 종료(quit)합니다. :w와 조합하여 :wq (저장 후 종료)가 많이 사용됩니다.

저장하지 않고 강제로 종료하기 위해서는 :q!를 실행합니다.

 

 

Vim 라인 명령 모드 중 검색 모드

 

한편 명령 모드에 진입하는 또 다른 방법으로 /가 존재합니다. /는 검색 전용입니다.

 

 

검색 내용의 앞 뒤를 이동하는 방식은 n(뒤) N(앞) 입니다.

 

이러한 검색 기능을 이용하여 텍스트 대체(substitute)를 할 수 있습니다.

 

:s/[대체될 용어]/[대체할 용어]/옵션

 

:s/movie/cinema는 커서가 있는 줄에 있는 movie 문자열을 cinema로 고칩니다. 만약 커서 뿐마 아니라 전체 줄을 대상으로 대체하고 싶다면 :%s/movie/cinema를 입력합니다.

 

그런데 주의할 점은 전체 줄을 대상으로 하지만 첫번째로 발견되는 문자열만 대체한다는 것입니다. 예를 들어, I love movie, so I make movie와 같은 문구가 있다면 I love cinema, so I make movie와 같이 첫번째만 대체됩니다. 모든 문자를 전부 교체하고 싶다면 :%s/movie/cinema/g를 입력합니다. g는 global의 약자입니다.

 

또, 용어는 같지만 특정한 용어만 교체하고 싶다면 옵션에 c를 입력합니다. :%s/movie/cinema/gc

 

팁으로 :set number를 입력하시면 터미널의 좌측에 행번호가 뜹니다.

 

 

Vim 일반모드

 

처음 vim에 접속하면 일반 모드이다. 다른 모드에서 일반 모드로 이동하려면 ESC를 누르자.

 

위치 관련

 

글자 단위 이동

화살표, hjlk 키

 

단어 단위 이동

w(W) : 다음 단어 첫 글자로 이동

b(B) : 이전 단어 첫 글자로 이동

e(E) : 현재 커서 상의 단어의 마지막 글자로 이동

 

줄 단위 이동

^ : 해당 줄의 처음으로 

0 : 해당 줄의 처음으로 이동

$ : 해당 줄의 마지막으로

 

파일 단위 이동

gg : 파일의 처음으로 이동

G : 파일의 마지막으로 이동

 

삭제

 

x : 문자 삭제

숫자 + x : 숫자 만큼 문자 삭제

dw : 한 단어 삭제(동시에 눌러야 함)

dd : 문장 삭제

숫자 + dd : 숫자 만큼 문장 삭제

 

* u : 되돌리기(ctrl + z는 vim에서는 사용할 수 없다.)

* U : 해당 행에 수정한 내용들 전부 되돌리기

 

복사, 붙여넣기

 

yy : 해당 줄 전체 복사

p : 복사한 내용 붙여넣기

 

 

 

Vim 비주얼 모드

 

v(문자 단위), V(줄 단위)로 접속 가능하다. 접속 후 방향키를 움직이면 블럭이 설정된다.

 

블록 지정된 상태에서 다음 명령어를 이용할 수 있다.

 

x : 삭제 
y : 복사(yank). 붙여넣기는 p(paste, 커서 다음칸에 붙여넣기), P(커서 이전 칸에 붙여넣기)

d : 잘라내기. 붙여넣기는 p(paste, 커서 다음칸에 붙여넣기), P(커서 이전 칸에 붙여넣기)

 

 


빔을 게임처럼 배울 수 있는 곳도 있다. 

 

 

VIM Adventures - Learn VIM while playing a game

VIM Adventures is an online game based on VIM's keyboard shortcuts. It's the "Zelda meets text editing" game. So come have some fun and learn some VIM!

vim-adventures.com

 

'🐧 Linux, shell, web server > ✅ Vim' 카테고리의 다른 글

.vimrc으로 커스텀 vim 환경 만들기  (0) 2020.06.25

darren, dev blog
블로그 이미지 DarrenKwonDev 님의 블로그
VISITOR 오늘 / 전체