2011년 6월 16일 목요일

[Emacs] 터미널 Emacs에서 Mac OS X 클립보드 이용하기

Mac OS X 의 Terminal.app에서 emacs -nw 옵션으로 바로 터미널에서 이용 중일 때 복사/잘라내기/붙이기에 좀 문제가 있는 편이다. 외부에서 복사한 내용을 Emacs에 붙여 넣을 때는 CMD-V 로 붙여넣으면 되지만, Emacs의 내용을 복사해서 외부 창에 붙여 넣으려면 마우스로 드래그 해서 CMD-C 로 복사해 내는 방법이 기본적이다.

그런데 마우스를 이용하면 매우 많은 라인의 내용을 복사할 수가 없다. 스크롤이 안되니까.

해법을 찾아봤다. 여러가지 방법에 대한 이야기가 있지만 Mac OS X에서는 잘 안되는 것 같다.

그러다 pbcopy와 pbpaste를 이용해 확장하는 방법을 찾게 되었다.

(defun mac-copy ()
  (shell-command-to-string "pbpaste"))

(defun mac-paste (text &optional push)
  (let ((process-connection-type nil))
    (let ((proc (start-process "pbcopy" "*Messages*" "pbcopy")))
      (process-send-string proc text)
      (process-send-eof proc))))

(setq interprogram-cut-function 'mac-paste)
(setq interprogram-paste-function 'mac-copy)
이 코드를 .emacs에 적용하면 이 후 부터 Emacs의 C-w / M-w / C-y 가 OS X의 클립보드와 연동되게 된다. (정확히 말해서 kill-ring을 이용하는 모든 함수에 적용된다.)

외부 유틸리티를 이용하기 때문에 느린 시스템에선 약간의 느린 현상이 있겠지만 크게 우려할 만한 정도는 아닌 것 같다.

참고원문: http://www.lingotrek.com/2010/12/integrate-emacs-with-mac-os-x-clipboard.html

댓글 없음 :