[Emacs] 검색 후 되돌아오기
Emacs에선
아래가 소스 코드이다.
내용 상에 현재 파일 이름이 없으면 북마크 기록을 하지 않도록 한 부분이 있는데, 북마크 기능은 파일이름이 없는 버퍼의 경우 에러가 발생하기 때문이다. 따라서 이 기능은 scratch 등의 특수 버퍼에서는 동작하지 않고 오로지 파일을 열었을 때 생성되는 버퍼에서만 동작한다.
혹시나 이 기능과 동일한 기능이 제공되고 있을 가능성은 매우 높다. 하지만 이런 기능을 직접 구현한다는 것도 왠지 보람찬 일이라고나 할까. 그냥 기분이 좋다. ;)
C-s
나 C-r
로 파일 내 검색을 할 수 있는데 이 때 검색 전의 위치로 돌아오는 명령이 있는지 없는지 모르겠다. 찾는것도 귀찮고 해서 이 기능을 만들어 봤다.아래가 소스 코드이다.
(defun memory-and-search () (interactive) (when buffer-file-name (bookmark-set "search-point")) (isearch-forward)) (defun memory-and-search-backward () (interactive) (when buffer-file-name (bookmark-set "search-point")) (isearch-backward)) (defun back-to-search-point () (interactive) (bookmark-jump "search-point")) (global-set-key (kbd "C-s") 'memory-and-search) (global-set-key (kbd "C-r") 'memory-and-search-backward) (global-set-key (kbd "C--") 'back-to-search-point)
C-s
혹은 C-r
키를 누르면 Emacs의 기본적인 bookmark 기능을 활용해 현재 위치를 기록한 후에 검색 함수를 호출하도록 한 코드이다.내용 상에 현재 파일 이름이 없으면 북마크 기록을 하지 않도록 한 부분이 있는데, 북마크 기능은 파일이름이 없는 버퍼의 경우 에러가 발생하기 때문이다. 따라서 이 기능은 scratch 등의 특수 버퍼에서는 동작하지 않고 오로지 파일을 열었을 때 생성되는 버퍼에서만 동작한다.
C--
(Ctrl 키와 -키를 동시에 누르기) 키를 누르면 검색 전의 위치로 점프하게 된다. (원래 이 키는 negative argument에 매핑되어 있지만 개인적으론 잘 사용하지 않는다)C--
키를 되돌아오기 키로 설정한 이유는 bash의 이전 디렉토리로 돌아가기 커맨드인 'cd -
' 의 영향이 크다. -_-;;혹시나 이 기능과 동일한 기능이 제공되고 있을 가능성은 매우 높다. 하지만 이런 기능을 직접 구현한다는 것도 왠지 보람찬 일이라고나 할까. 그냥 기분이 좋다. ;)
댓글
원하시는 바가 그것인것 같은데 한번 사용해보세요
위 코드는 검색 시작 지점에 자동으로 북마크를 기록하는 것도 포함되어 있습니다.
혹시나 C-s 시 자동으로 지점이 기록되는 기능이 있다면 전 헛일을 한 것이겠지만요. ;-)
(아직 시험해 보지는 않았습니다. 업무 중이라 'ㅅ';;;)
그나저나 만나기 힘든 emacs 유저를 만나게 되어 너무나 반갑습니다. 서로 좋은 정보 공유 하면 좋겠습니다.
종종 들르겠습니다.
기본적으로 되는 거였군요. 하아 ^^;
좋은 정보 감사합니다~
(http://www.gnu.org/software/emacs/emacs-lisp-intro/html_node/Point-and-mark.html)