2011년 4월 20일 수요일

[Emacs] 반복 입력을 위한 모드, dot-mode.el

Vi/Vim의 강력한 기능 중 하나가 .으로 '마지막으로 입력했던 내용 그대로 붙여넣기'가 있다. 뭔가를 입력한 다음에 ESC를 누르고 원하는 위치로 이동해서 .을 누르면 방금 전에 입력했던 내용이 그대로 달라붙는다. 즉 반복적으로 동일한 커맨드를 입력할 때 굉장히 편한 기능이다.

Emacs의 경우도 물론 비슷한(-_-) 기능이 있지만 결코 편하지는 않다. 그래서 이와 비슷한 기능을 구현한 것이 바로 dot-mode 이다. (공식적으로 언급하고 있지만, dot 이라는 이름은 결국 vi의 . 을 의미하는 것으로 보면 된다)



# 설치방법

위 사이트에서 직접 코드를 내려 받아 load-path에 등록된 디렉토리에 복사하면 된다. 물론 EmacsWiki에도 코드가 올라와 있기 때문에 M-x auto-install-from-emacswiki RET dot-mode.el RET 명령으로도 쉽게 설치가 가능하다.

# 설정

스크립트 소스에도 나와있듯이, 필요한 설정은 굉장히 단순하다.
(require 'dot-mode)
(add-hook find-file-hook 'dot-mode-on)
find-file-hook, 즉 파일을 오픈할 때 마다 dot-mode-on 커맨드를 실행시키도록 한 부분이다.

*scratch* 등의 버퍼는 기본적으로 존재하는 버퍼이기 때문에 위의 훅으로는 dot-mode가 자동으로 켜지지 않는다. 이런 특수한 경우는 M-x dot-mode 로 수동으로 켜고 끌 수도 있다.

# 사용방법

코드 상에 몇 가지 사용법에 대한 설명이 있지만 한가지 단축키만 소개하겠다.
C-.
마지막으로 입력했던 내용을 그대로 붙여넣기(dot-mode-execute) 하는 내용이다. 나머지 함수들은 거의 쓸 일이 없을 것 같다.

# 사족

불행히도 한글 등의 ASCII 범위를 벗어나는 특수 문자는 제대로 처리를 하지 못 한다. 이 부분은 염두에 둬야 할 것 같다. Emacs와 한글과의 전쟁은 아직 끝날 기미가 없나보다. (T _ T)

영문 상태로 입력한 내용을 다시 붙이려고 C-.을 누르기 전에 한글로 전환을 하면 한글 상태로 해당 내용이 그대로 입력되어 버린다. 예를 들어 abcd 를 한글 상태로 dot-mode의 자동입력 기능을 이용해 버리면 뮻ㅇ가 입력되는 것이다. 키 스트로크 기반의 녹화 기능을 수행하고 있다고 추측이 가능하지만 뭔가 좀 아쉽다. -_-;;;;

때에 따라서 틀리겠지만, vim-mode를 활용하는게 더 수월한 상황도 있을 것 같다.

댓글 없음 :