프로그래밍/Vim

[Vim] 커서 이동

Peter Ahn 2017. 2. 23. 18:47
반응형

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의 우아한 프로그래밍

여러분의 댓글은 저에게 크나큰 힘이 됩니다. 오류 및 의견 남겨주시면 감사하겠습니다.



반응형