Vim : 글자 반복

매일 매일 Vim 만 쓴다면, 언젠가는 전문가(?)라 할 날도 오겠지만.. 사실 자주 쓰기는 하지만, 용도가 상당히 한정돼 있으므로, 날아다닐 정도로 쓰지는 못하고 있다. 그저, 아주 간단한 편집만 할 수 있을 뿐.

Vim 에서 글자를 반복하여 입력하고 싶을 땐? 물론, 그 글자를 계속 누르고 있으면 되지만??

Insert 일 때와 Command 상태, 또는 Normal 일 때, 모두 이 ‘반복’을 가능하게 할 수 있는 모양이다.

먼저, Normal 상태(Insert/Command 가 아닌 상태)에서 입력하는 방법을 알아보자.

# 반복할 숫자i(또는 a)반복할 글자<ESC>
# 사용 예
80i#<ESC>

# 를 80번 반복하여 입력. i 를 쓰나 a 를 쓰나 같다. (엄밀히 말하면 조금 다르겠지만.. 커서가 현재 위치냐, 그 다음 글자에 위치하냐의 차이가 있다.)
StackExchange 질문에 달린 두번째 댓글을 참고했다.

그 외에, Command 상태에서 이렇게 할 수도 있다.

:norm 80i#

또는, 이미 있는 문자를 다른 문자로 바꾸고 싶을 때는, 다시 말해 위에 있는 # 를 ^ 등으로 바꾸고 싶다면?
# 를 모두 선택한 뒤, ^ 로 바꾸라는 명령을 준다.

v$r^

위 내용 역시 StackExchange 의 같은 글을 참고했다.

설명하자면, v 로 Visual Mode 로 진입하고, $ 로 커서 끝까지 선택한 후, r 로 바꾸라(Replace) 명령을 내리고, 마지막 ^ 를 입력하여 마친다.


문제는.. Ctrl-o 를 사용하여, Insert 상태에서 1회만 Normal 상태로 돌아가는 명령을 쓰고 싶은데, 그게 안된다. 왜 그럴까..?

역시나 문제는 KDE 였다. 검색으로는 찾지 못했지만, 어쨌든 KDE 에 문제가 있다는 사실은 알아냈다.
Gnome-shell 에선 확인하지 못했고, LXDE 에선 Ctrl-o 가 정상작동함을 확인했으니, Xon/Xoff 문제와 같이 KDE 의 문제로 보인다.

아무튼, KDE Tilix 상황에선 Ctrl-o 가 아니라 Ctrl-Meta-o 를 눌러줘야 한다.
KDE Konsole 에선 또 다르다. 여기선 Ctrl-Shift-o 가 그 ‘키’가 된다. Ctrl-Meto-o 를 누르면 @s 가 입력된다. (하지만 작동은 한다.)
KDE 문제인지 Tilix 문제인지는 알 길이 없다.

백문이 불여일견.

사용법은 다음과 같다.

  • Ctrl-Meta-o (아래쪽 상태막대에 — (끼워넣기) — 로 표시가 바뀜을 확인)
  • 숫자(반복 원하는 만큼. ex. 80) : 상태막대에 숫자가 표시됨. (위 화면에선 20)
  • i (삽입모드로 돌아감)
  • 반복 원하는 문자 넣기
  • <ESC> 로 작업 종료 : 이후 문자가 반복되어 입력됨.

Vim 설정에 따라 화면 아래쪽에 명령(위의 경우 숫자 20 입력 상태)이 안보일 수도 있다. 옵션이 설정되어 있지 않아 이런 현상이 나타나는데, 다음으로 해결할 수 있다.

:set showcmd

또는, .vimrc 를 열고, 위 내용을 넣어두면 더 편하다. 그냥 set showcmd 만 추가하면 된다.

Tags:,

안녕하세요. 글 남겨주셔서 고맙습니다.