2012년 7월 12일 목요일

[Emacs] 커서 위치의 단어 검색

Emacs에서 순차검색(isearch. 단축키는 C-s) 시 현재 커서 위치에 있는 단어(Word)를 검색하려면 검색어 입력 시 C-w를 입력하면 자동으로 검색어로 입력된다.

하지만 C-s C-w의 문제가 있다면 단어를 완벽하게 넣어주지 않는다는 점이다. Emacs 자체의 전반적인 특징이겠지만, 만약 단어 중간에 커서가 위치하고 있다면 커서 위치부터 단어 끝 까지만 검색어로 입력된다.

그렇다고 M-b를 눌러서 단어 첫 부분까지 이동해서 C-s C-w를 하는 건 굉장히 귀찮다. 그래서 해법을 찾던 중 괜찮은 코드를 발견했다.
(require 'thingatpt)

(defun my-isearch-yank-word-or-char-from-beginning ()
  "Move to beginning of word before yanking word in isearch-mode."
  (interactive)
  (if (= 0 (length isearch-string))
      (beginning-of-thing 'word))
  (isearch-yank-word-or-char)
  (substitute-key-definition 'my-isearch-yank-word-or-char-from-beginning 
        'isearch-yank-word-or-char
        isearch-mode-map))

(add-hook 'isearch-mode-hook
 (lambda ()
   "Activate my customized Isearch word yank command."
   (substitute-key-definition 'isearch-yank-word-or-char 
         'my-isearch-yank-word-or-char-from-beginning
         isearch-mode-map)))
이 코드를 실행시킨 후 C-s C-w를 입력해 보면 단어 시작점 부터 해당 단어가 자동으로 검색어로 입력되어서 검색된다. C-w로 검색어를 입력한 이후 다시 C-w를 입력하면 계속 다음 단어가 검색어로 추가된다.

감상은? 편하다. 그 자체로 좋은거다. ;-)

참고 링크: http://emacswiki.org/emacs/SearchAtPoint

댓글 없음 :