사용 팁
여기서는 외우는 것을 목표로 하기 위해, 자주 쓰이는 기능이나 상황을 적어놓자.
개행 문자 지우기
vim에서는 개행 문자를 지우는 기능이 없다. x
는 현재 커서의 글자를 삭제하고 X
는 현재 커서가 위치한 바로 전 글자를 삭제한다. 노멀 모드에서 커서는 항상 문자 위에만 올라갈 수 있으므로, vim에서는 개행 문자를 지울 수 있는 상황 자체가 만들어지지 않는다. 개행 문자 위에 커서를 올릴 수가 없으니까.
J
키를 이용하면 현재 커서가 위치한 라인 뒤에 아래 라인을 끌어올려 붙인다. 따라서 개행 문자를 지우는 효과를 가진다. 어차피 개행 문자를 지운다는 것이 그런 의미기도 하다.
J: Join lines
그럼 J
와 관련된 단축키를 정리해 보자.
J
: 현재 라인을 바로 아래 라인과 붙인다. 바로 아래 라인에 공백이 많더라도 붙이면 공백 한 칸으로 취급하여 붙인다.gJ
:J
와 같은 기능을 하는데, 공백 처리를 하지 않는다. 즉 공백이 많으면 많은 그대로 뒤에 붙인다.vJ
,vgJ
: 비주얼 모드 블록을 지정한 상태에서J
를 누르면 블록 지정된 라인을 다 붙인다. g는 공백 처리 여부를 결정한다.10J
,10gJ
: 10라인을 붙인다.10라인 비주얼 블록 J
와 같은 동작을 한다. g는 공백 처리 여부를 결정한다.
비주얼 블록의 한계
보통 세로 블록을 지정하기 위해서 C-v
를 사용한다. 그리고 블록 모드에서도 w
를 통해 한 단어를 선택할 수 있는데, 얼핏 생각해 보면 비주얼 블록 상태에서 w를 눌러 각 라인의 단어를 선택할 수 있을 것 같다. 예를 들어 매우 편리한 서브라임 텍스트에서의 세로 블록처럼 말이다. 하지만 이렇게 선택은 되지 않는데, vim에서의 visual block은 직사각형으로만 지정되기 때문이다.
따라서 vim에서는 서브라임 텍스트처럼 화려하게 세로 블록을 지정하거나 커서를 둘 수가 없다.
멀티 커서 동시편집
예를 들어 IDE에서 보통 Refactoring
이라 해서, 파일 내에서 여러 단어를 찾고 이를 동시에 편집하는 기능이 있다. 서브라임 텍스트에서도 모두 찾기
로 단어를 찾으면 커서가 찾은 단어 수 만큼 생겨서 바로 편집할 수 있는데, vim에서는 이것이 좀 어렵다. 그래서 정규 표현식으로 한 번에 바꾸는데, 이를 간단히 해결하기 위해서 vim-multiple-cursors 플러그인을 사용해볼 수 있다.
와 이건 진짜 편하다! vim 아무리 잘 쓴다고 하는 사람도 이건 무조건 쓸 것 같다.
특정 라인으로 이동하기
vim에서 특정 라인으로 이동하기 위해서는 :
를 눌러 원하는 해당 라인의 숫자를 입력하면 이동할 수 있는데, 이렇게 하지 말고 숫자와 gg
, G
를 조합하자. 따라서,
- 48G: 48라인으로 이동
- 48gg: 48라인으로 이동
그러면 현재 커서보다 아래에 있는 라인으로 이동하려면 G를, 위로 이동하려면 gg를 사용해야 하나? 라고 생각해볼 수 있는데, 전혀 상관없다. 개인적으로는 G
만 사용하는데, 왜냐 하면 타이핑을 한번 덜 해도 되기 때문이다.