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(커서 이전 칸에 붙여넣기)
빔을 게임처럼 배울 수 있는 곳도 있다.
'🐧 Linux, shell, web server > ✅ Vim' 카테고리의 다른 글
.vimrc으로 커스텀 vim 환경 만들기 (0) | 2020.06.25 |
---|