쿨한 기능이죠. 한편 복사한 줄로 이동하는 게 왜 두개지? 하는 의문을 갖는 분도 있을 것 같아요. vim mark중에는 이렇게 짝을 이루는 것들이 있습니다. 그리고 여는 쪽이 시작, 닫는 쪽이 마지막을 의미합니다. 즉 '[ 는 복사한 문자열의 시작지점, ']는 복사한 문자열의 끝나는 지점.
이걸 알아두면 다른 괄호 마크도 같이 이해가 됩니다. 근데 '( ') '{ '} 는 텍스트오브젝트가 있어서 잘 안 쓰고, `< `>는 종종 매우 편리하게 사용할 수 있습니다. 이것이 가장 최근 비주얼 모드로 선택했던 영역의 마크. 마우스 모드를 켜도 돌아갑니다. 드래그해서 선택한 영역을 기억하는거죠.
이게 무슨 얘기냐면 특정 영역을 선택했다가, 선택을 풀고 다른 거 하다가 `< 를 입력하면 선택했던 영역의 시작점으로 커서가 점프한다는 뜻. 오오 그렇다면 `<v`> 하면 그 영역을 다시 선택할 수 있겠네요? 그렇습니다. 그런데 이렇게 하면 키를 5번 눌러야 하잖아요? 이걸 줄인 것이 gv 입니다.
gv를 사용하는 모습을 영상으로 찍어 봤습니다.
1. vip 로 패러그래프 비주얼 모드 선택
2. L 로 마지막 줄로 이동
3. 아무거나 입력하다가
4. gv 로 처음 선택한 영역 다시 선택
비주얼 모드 이야기가 나온 김에 o 하나 더 얹어봅니다. NORMAL에서 o O 는 new line을 만드는... 자주 쓰지만 꽤 평범한 기능을 제공하죠. 그런데 VISUAL 모드에서 o 는 다른 에디터에서는 보기 힘든 기능 하나를 제공합니다. 그것은 바로 선택 영역 내 커서 점프입니다. 범위를 쭉 선택하고 나서
커서를 옮기면 범위 시작 지점은 못 바꾸고 범위 끝 지점만 바꿀 수 있죠. 그런데 o 를 누르면 시작 지점으로 커서가 점프해서 시작 지점도 바꿀 수 있게 해줍니다. 다시 o 누르면 끝 지점으로 돌아가고... 아 이걸 말로는 설명이 힘든데 영상 찍고 다시 올게요.
o 를 사용해서 선택 영역의 시작~끝을 왔다갔다할 수 있고, 만약 블록 비주얼 모드(사각형 선택 모드)라면 O 를 눌러서 반대편 각으로 이동하는 것도 가능합니다.
물론 마우스로 선택했을 때도 o가 됩니다. vim에서 set mouse=a 로 설정해두면 다른 에디터처럼 마우스를 쓸 수 있어요. 전 대체로 키보드를 쓰긴 하지만 그때그때 편하게 쓸 수 있는 건 다 동원하는 편이라 vim에서도 마우스를 설정해놓고 씁니다.
이 이야기의 시작은 '[ '] 그리고 '< '> 였죠. 이 중에서 비주얼 마크인 '< '> 로 돌아가보죠. 선택한 영역을 기억한다는 건 재선택이 가능하다는 점에서 상당한 매력이 있습니다. 그런데 흥미로운 것은 이 재선택이 눈에 보이지 않는 방식으로도 가능하다는 사실. '< '> 를 :s 와 쓸 수 있습니다.
보통 visual 모드로 선택을 한 다음 :s 로 substitute를 하려 하면 커맨드 라인에 이렇게 나옵니다. 왼쪽의 range 표기를 보면 '<,'> 이렇게 나오죠. range에 '< '> 를 쓰고 있다는 것인데, 잘 생각해보면 지금 선택중이 아니어도, 아까 선택한 거라면 :s 를 사용할 수 있다는 것을 알 수 있습니다.
아마 보통은 선택을 해놓고 replace를 하려 할 때 바로 :s 를 쓸 거에요. 근데 뭐 다른 곳에 클릭을 했다던가 해서 선택이 풀리면 아 짜증나 하면서 다시 선택하는 경우가 있죠? vim에서는 걍 '<,'> 마크를 쓰면 재선택이 필요 없습니다. 아 물론 gv:s 해도 되고요.
@threadreaderapp unroll
Share this Scrolly Tale with your friends.
A Scrolly Tale is a new way to read Twitter threads with a more visually immersive experience.
Discover more beautiful Scrolly Tales like this.
