vim에서 커서 이동하기
vim가 개발된 시기에는 마우스가 없었기 때문에 커서를 조작하기 위해서는 키보드를 이용해야 합니다.
일반적으로 키보드의 화살표 키나 PageUP/Down, Home, End 키 등을 사용해서 커서이동을 할 수 있습니다. 그런데 vim에서는 이 밖에도 별도의 영문 키로 커서 이동이 가능한데요, 이것은 vim이 개발되던 당시의 키보드는 텐키(키보드 우측에 숫자가 있는 부분)나 화살표 키 등이 없는 형태였기 때문에 별도의 키로 구현이 된 것입니다.
요즘 나오는 키보드에 화살표키가 없는 경우는 굉장히 드물지만 오른손의 동선을 최소화할 수 있고 향후 포스팅할 자동화 매크로 기능에서도 영문자 키를 이용한 커서 이동이 활용되기 때문에 알아두시는게 좋습니다.
vim 에서 사용되는 모든 명령은 대소문자를 구분합니다. 일반모드를 포함해서요. caps lock 키가 ON 된 상태에서 일반모드에서 평소처럼 명령어를 입력하면 전혀 다른 명령어로 인식하기 때문에 주의가 필요합니다.
1. 커서 이동 (영어 소문자)
vim에서 사용되는 영문자 커서 이동 키는 다음과 같습니다.
←(h) ↓(j) ↑(k) →(l)
키보드에서 h, j, k, l 순으로 배열되어 있으니 적응하는데는 어려움이 없으실 거라 생각합니다. 단, 반드시 소문자로 입력하셔야 제대로 동작합니다.
vim에서 커서 이동과 같이 반복되는 명령의 경우 반복횟수를 지정하여 한번의 명령어로 여러번 동작할 수 있습니다.
예를들어 일반모드에서 5h 라고 입력하면 커서가 왼쪽으로 이동합니다. 마찬가지로 10k 이렇게 입력하면 커서가 위로 10행 이동합니다.
h,j,k,l 키 외에 많이 사용되는 커서 이동 키가 있습니다. 공백을 제외한 현재 행의 맨 앞으로 이동하는 키인 ^ 키와 행의 맨 뒤로 이동하는 $ 키입니다.
커서 이동 명령을 정리하면 다음과 같습니다.
command |
description |
[#]h |
#칸 왼쪽으로 커서 이동 |
[#]j |
#칸 오른쪽으로 커서 이동 |
[#]k |
#칸 위쪽으로 커서 이동 |
[#]l |
#칸 아래쪽으로 커서 이동 |
^ |
공백을 제외한 현재 행의 맨 앞으로 커서 이동 |
$ |
현재 행의 맨 뒤로 커서 이동 |
[ ] 괄호로 된 부분은 생략이 가능하며, 생략 시 1을 입력한 것과 동일하게 동작합니다.
2. 화면 단위 커서 이동
커서 이동 명령인 j, k로는 한칸씩만 이동이 가능하기 때문에 내용이 많은 문서를 편집할 때 불편함이 있습니다. 물론 10j, 10k 이런식으로 n개의 행만큼 이동이 가능하지만 불편하기는 마찬가지입니다.
이럴 때는 화면 단위로 스크롤하는 키를 활용하면 편리합니다.
command | description |
ctrl+b | 위로 한 화면 스크롤 (PageUp 키와 동일) |
ctrl+f | 아래로 한 화면 스크롤 (PageDown 키와 동일) |
ctrl+u | 위로 1/2 화면 스크롤 |
ctrl+d | 아래로 1/2 화면 스크롤 |
3. 특정 행으로 커서 이동
대용량 문서를 편집할 경우에는 한 화면씩 스크롤 하는 것으로도 부족할 때가 있습니다. 특히 문서의 맨 뒤나 맨 앞으로 가는 경우에 한번에 이동하는 키를 알아두면 편리합니다.
command | description |
[#]gg | #행으로 이동 (# 생략 시 첫 번째 행으로 이동) |
[#]G | #행으로 이동 (# 생략 시 마지막 행으로 이동) |
:# | #행으로 이동 |
gg, G 명령은 주로 #을 생략하고 첫 번째 행이나 마지막 행으로 이동할 때 사용합니다.
특정 행으로 이동하는 것은 명령행 모드에서 입력(:#)하는 방법을 주로 사용합니다.
현재 행이 몇 번째 행인지 알고 싶을 때는 일반모드에서 ctrl+g 키를 입력하면 하단에 현재 편집중인 문서와 행이 표시됩니다.
-Peter의 우아한 프로그래밍
여러분의 댓글은 저에게 크나큰 힘이 됩니다. 오류 및 의견 남겨주시면 감사하겠습니다.
'프로그래밍 > Vim' 카테고리의 다른 글
[Vim] 이전 명령어 반복 수행 (1) | 2017.03.13 |
---|---|
[Vim] 복사(Copy), 붙여넣기(Paste), 삭제(Delete), 실행취소(Undo) (1) | 2017.03.06 |
[Vim] 파일 열기, 저장, 종료 (1) | 2016.12.02 |
[Vim] 모드 이해 (1) | 2016.11.26 |
[Vim] 소개 (vim의 역사 및 장점) (1) | 2016.11.24 |