Practical Vim 팁 요약 시리즈 - Visual-Block Mode

06 Dec 2016

  1. Visual-Block Mode
    1. Tip 24. Edit Tabular Data with Visual-Block Mode
    2. Tip 25. Change Columns of Text
    3. Tip 26. Append After a Ragged Visual Block
      1. “i”와 “a” 사용법
    4. 시리즈 포스트를 한 장의 페이지로도 정리합니다.
  • iBooks로 읽는 프랙티컬 Vim 2판을 정리하는 페이지이며 내편한대로 발췌하고 보충하기 때문에 원본을 반드시 참조하세요.
  • Vim은 다른 텍스트 에디터와 다르게 여러 모드를 가진다. Normal/Insert/Visual Mode의 세 가지가 주요 모드인데, 번역이 일관성이 없다. 대체로 Normal Mode는 일반/명령 모드, Insert Mode는 입력/편집 모드, Visual Mode는 비주얼/선택 모드, 일반 모드에서 :로 진입하는 모드는 명령행/ex/명령어 모드 등으로 번역되는데, 이 글에서는 앞의 굵은 글씨의 모드로 사용한다.

Visual-Block Mode

Tip 24. Edit Tabular Data with Visual-Block Mode

visual_mode/chapter-table.txt에서 <C-v>로 비주얼 블록 모드로 전환. 3j로 아래 3열을 추가한 후 x를 눌러서 선택한 열을 제거하고 . 명령을 여러 번 눌러서 같은 범위를 여러 번 지운다. 두 열의 간격이 적당해질 때까지 반복한다. 넓은 범위를 선택해서 한번에 지워도 되지만 한 열씩 지우면 시각적으로 바로 확인할 수 있으므로 한 열씩 제거하는 방법이 낫다. 마지막으로 선택했던 범위를 gv 명령으로 다시 선택하여 r|로 선택한 범위를 모두 파이프 문자로 바꾼다. 행 단위 복사, 붙여넣기로 최상단 행을 복제한 후에(yyp) 복제한 행에서 모든 문자를 대시(-) 문자로 치환한다(Vr-).

표만들기

Tip 25. Change Columns of Text

비주얼 블록 모드를 사용하면 동시에 여러 행에 내용을 추가하는 것도 가능 하다. 비주얼 블록 모드는 표 형식의 자료를 작업할 때만 유용한 것이 아니다. 코드 작업을 할 때도 종종 요긴하게 활용할 수 있다.

visual_mode/sprite.css에서 파일의 디렉토리를 여러 줄에 걸쳐 변경해야 할 때 변경하려는 범위를 비주얼 블록을 사용해서 지정한다. c를 누르면 선택 영역의 내용이 지워지고 입력 모드로 전환된다. “components”를 입력하면 가장 상단의 행에서만 입력한 내용이 나타날 것이다. 나머지 두 행에서는 아무런 반응이 없지만 <Esc>를 눌러 일반 모드로 돌아가는 순간 입력했던 내용이 나머지 두 행에 추가되는 것을 확인할 수 있다.

Tip 26. Append After a Ragged Visual Block

the_vim_way/2_foo_bar.js는 세 줄이고 행의 길이가 다르다. 세 행의 끝에 세미콜론을 붙이려고 한다. 비주얼 블록 모드로 진입한 다음에 선택 영역을 행의 마지막까지 늘리기 위해 $ 명령을 사용한다. 사각형으로만 제한에서 벗어나서 각 행의 선택 영역을 오른쪽 끝까지, 행의 길이에 맞춰 확장한다.

A 명령을 누르면 입력 모드로 전환되며 가장 상단 행의 끝에 커서가 놓이게 된다. 입력 모드에 있는 동안에 입력한 내용은 가장 상단의 행에서만 나타나지만 입력 모드를 벗어나면 선택한 모든 행에 반영된다.

“i”와 “a” 사용법

ia 명령은 일반 모드에서 입력 모드로 전환하는 명령이고, 각각 현재 문자 앞에, 뒤에 커서를 갖다놓는다. IA는 비슷하지만, 각각 커서를 현재 줄의 처음과 마지막으로 이동한다.

비주얼 블록 모드에서도 비슷하다. IA 명령은 선택한 영역의 시작 또는 끝으로 커서를 이동한 후 입력 모드로 전환한다.

비주얼 모드와 동작 대시 모드에서 ia 명령은 텍스트 개체를 선택할 때 사용하는 명령이므로 전혀 다르게 동작한다. 비주얼 모드에서 i로 입력 모드로 전환하지 않는다면 I를 입력해보라.

시리즈 포스트를 한 장의 페이지로도 정리합니다.

Share this:

comments powered by Disqus