vim 기타 커서 이동(3)


vim은 마우스를 쓰지 않고 작업하는 것을 기본으로 하기 때문에 다양한 커서 이동 방식이 존재한다. 


앞에서 커서를 단어 단위, 행 단위, 문장 단위, 공백인 행 단위로 움직이는 법을 배웠는데 이번에는 화면 내부에서 움직이는 법이다. 


당연히, 모든 키는 명령 모드를 전제한다.


대문자 H 현재 vim 화면의 최상단으로 커서 이동

대문자 M 현재 vim 화면의 중앙으로 커서 이동

대문자 L 현재 vim 화면의 최하단으로 커서 이동

High, Middle, Low로 생각하면 편하다.


화면 내에서 커서 이동에 대해서는 다음의 사진을 보면 이해하기 쉬울 것이다.

vim 화면에서 커서의 위치


이 사진은 vim의 화면이 현재 1행부터 23행까지 나타나 있다.

명령 모드에서 대문자 H를 누르면 화면의 최상단으로 커서가 이동하므로 커서는 1행에 위치해 있다.

대문자 M을 누르면 화면의 중앙인 12행에 위치하게 되고, 대문자 L을 누르면 화면의 가장 마지막 행인 23행으로 이동한다.


이때, 대문자 H키와 대문자 L키는 다음과 같이 응용할 수 있다.

[n]H → 현재 화면에서 커서를 위에서 n번째 행으로 이동(가령, 8H는 화면 상단에서 8번째 행으로 이동)

[n]L → 현재 화면에서 커서를 아래에서 n번째 행으로 이동(가령, 7L 화면 최하단에서 7번째 행으로 이동)


Anki 파일


아래는 본 포스팅의 내용을 갈무리하기 위한 Anki 파일입니다. 참고하시기 바랍니다. 



vim 기타 커서 이동(2)


커서의 위치를 주의깊게 보면서 아래의 내용을 확인해보자. 


1) 왼쪽 괄호 '(' 문장(sentence) 단위 첫 글자역방향 이동


명령 모드에서 왼쪽 괄호 '(' 키를 계속 누르면 다음과 같이 움직인다. 

문장 단위 첫 글자 역방향 이동 사례

이 사례를 보면 문장(sentence)의 단위이어진 행들공백인 행을 각각 하나의 문장으로 본다는 것을 알 수 있다.

에서 로 이동하는 것은 문서의 역방향으로 탐색했을 때 처음으로 만나는 문장의 첫 글자이기 때문이다.

③의 공백인 행 첫 글자가 없어도 해당 빈칸으로 이동한다.

에서 가장 첫 번째 행에 도달했고 더 이상 이전 문장이 없기 때문에 번처럼 가장 첫 번째 행의 가장 첫 번째 칸으로 이동한다.



2) 오른쪽 괄호 )문장 단위 첫 글자정방향 이동(다음 문장의 첫 글자로 이동)


명령 모드에서 오른쪽 괄호 ')' 키를 계속 누르면 다음과 같이 움직인다. 

문장 단위 첫 글자 정방향 이동 사례

에서 마지막 문장이 첫 글자로 이동한 후에 다음 문장이 없을 경우 처럼 가장 끝으로 이동한다.

 


3) 왼쪽 중괄호 {공백인 행으로 역방향 이동(이전 공백인 행으로 이동)


명령 모드에서 왼쪽 중괄호 '{'룰 계속 누르면 아래와 같이 커서가 이전의 공백인 행으로 점프한다.

공백인 행으로 역방향 이동 사례

번처럼 더 이상 공백인 행이 남아 있지 않을 경우 가장 처음으로 이동한다.



4) 오른쪽 중괄호 }공백인 행으로 정방향 이동(다음 공백인 행으로 이동)


명령 모드에서 오른쪽 중괄호 '}'룰 계속 누르면 아래와 같이 커서가 다음 공백인 행으로 점프한다

다음 공백인 행으로 이동 사례

번처럼 더 이상 공백인 행이 남아 있지 않을 경우 가장 끝으로 이동한다.




5) 원하는 문서 위치로 바로 이동 


[n]gg n 번째 행으로 이동, 숫자를 생략할 경우 문서의 맨 처음으로 이동

[n]G n 번째 행으로 이동, 숫자를 생략할 경우 문서의 맨 마지막으로 이동

:n n 번째 행으로 이동

<Ctrl + g> → 커서가 문서 전체에서 현재 어떤 위치에 있는지 확인(Ctrl키를 누르면서 g 키를 눌러야 한다.)


Anki 파일


아래는 본 포스팅의 내용을 갈무리하기 위한 Anki 파일입니다. 참고하시기 바랍니다. 


vim 기타 커서 이동(1)


vim의 커서 이동은 상하좌우 외에 다양한 방식의 이동이 가능해서 익숙해지면 매우 효과적으로 작업할 수 있게 도와준다. 

커서의 위치를 주의깊게 보면서 아래의 내용을 확인해보자. 


1) 캐럿(^) 키는 커서가 위치한 행의 첫 글자로 이동


  name age phone etc 캐럿(^)

  name age phone etc 이렇게 된다.

첫 글자로 이동하므로 첫 글자 앞에 공백이 있어도 그 공백으로는 가지 않는다. 


2) 달러($) 키는 커서가 위치한 행의 마지막 칸으로 이동한다


 name age phone etc 달러($)

 name age phone etc 이렇게 된다.

달러($)캐럿(^)과 달리 마지막 칸이 공백일 경우에는 공백으로 이동한다.


3) w or W → 단어의 첫 글자로 정방향 이동(다음 단어의 첫 글자로 이동)


  name age phone etc w or W

  name age phone etc 이렇게 된다.


4) b or B → 단어의 첫 글자로 역방향 이동(이전 단어의 첫 글자로 이동)


  name age phone etc b or B

  name age phone etc 다시 누르면

  name age phone etc 이렇게 된다.

단어의 첫 글자로 역방향 이동이므로 커서가 위치한 글자가 현재 단어의 첫 글자가 아닐 경우 현재 단어의 첫 글자로 우선 이동하게 된다.


5) 플러스(+) 키는 다음 행의 공백이 아닌 첫 글자로 이동


이 상태에서 플러스(+) 키를 누르면

name age phone etc

 john 10 000-0000 male

 

다음 행의 공백이 아닌 첫 글자로 이동

name age phone etc

 john 10 000-0000 male


6) 마이너스(-) 키는 이전 행의 공백이 아닌 첫 글자로 이동


이 상태에서 마이너스(-) 키를 누르면

name age phone etc

 john 10 000-0000 male

 

이전 행의 공백이 아닌 첫 글자로 이동

name age phone etc

 john 10 000-0000 male



Anki 파일


아래는 본 포스팅의 내용을 갈무리하기 위한 Anki 파일입니다. 참고하시기 바랍니다. 


007 기타 커서 이동(1).apkg


vim의 커서 이동 키


일반적인 텍스트 에디터와 마찬가지로 vim에서도 화살표 키를 눌러 커서를 이동할 수 있다. 그렇지만 vim은 명령 모드에서는 h, j, k, l 키들을 화살표 키처럼 사용할 수 있다


소문자 k =

소문자 h =

소문자 l =

소문자 j =


hjkl 과 화살표를 단순하게 매칭하면 낯설기 때문에 이 키들을 아래처럼 시계방향으로 그려보면 조금 편하게 익숙해진다.


      k()

()h          l()

       j()


화살표 키는 명령 모드와 편집 모드에서 전부 사용할 수는 있지만 hjkl은 명령 모드에서만 사용된다. 그럼, 화살표 키를 쓰는 것이 편하고 더 낫지 않을까?

 

아쉽지만, vim을 공부하다 보면 hjkl과 결합된 단축키가 많이 등장한다. 또, vim에서는 대부분의 명령어 앞에 숫자를 붙여서 동일한 명령을 수회 반복할 수 있는데 이렇게 숫자를 결합해서 쓸 경우에도 hjkl 이 더 유리하다. 마지막으로, hjkl 에 익숙해지면 손이 키보드의 중심에서 벗어나지 않아 빠르고 효율적이 되기 대문에 결국 hjkl에 익숙해지는 것이 좋다.

 

다음의 명령어에서 [n]은 숫자를 의미하며 명령 모드에서 10k, 5l, 3j, 8h 와 같이 키를 누르면 된다.


[n]k 위로 n, 숫자 생략할 경우 1행 이동

[n]l 오른쪽으로 n, 숫자 생략할 경우 1칸 이동

[n]j 아래쪽으로 n, 숫자 생략할 경우 1행 이동

[n]h 왼쪽으로 n, 숫자 생략할 경우 1칸 이동


※ 앞으로 [ ] 대괄호로 감싼 부분은 생략 가능한 옵션을 표시할 때 사용한다. 



Anki 파일


아래는 본 포스팅의 내용을 갈무리하기 위한 Anki 파일입니다. 참고하시기 바랍니다. 



+ Recent posts