EmacsW32 를 설치하고 grep-find 를 동작하게 만들기 위해서 몇가지 세팅을 해줘야 합니다. 

1. EmacsW32 설치하기 


 EmacsW32 는 GNU Emacs 에다가 윈도에서 사용하기 편하게 몇가지 패치를 한 버젼입니다. 편해서 윈도에서는 항상 설치해서 사용하고 있습니다. 


2. grep-find 문제 해결 

 grep-find (find-grep 으로 써도 똑같이 동작함)은 현재 디렉토리부터 하위 디렉토리까지 찾고자 하는 단어를 포함하고 있는 줄의 정보를 표시하는 Emacs 의 기능입니다. 유닉스 명령어 (unix command) 중에서 가장 많이 쓰이는 find 와 grep 을 합쳐놓은 것입니다. 게다가 검색된 파일을 바로 emacs 상에서 열어서 편집할 수가 있습니다. 

요즘 대부분의 통합개발툴 (IDE) 상에서 지원하는 검색하고 무엇이 다르냐? 라고 물으면 '똑같다. 다른게 없다' 라고 말씀드릴 수 있습니다. 다만 아주 예전부터 지원하는 기능이라서 이 기능 때문에 이맥스( Emacs) 를 20년간 사용하고 있다는 분도 계십니다. 

grep 문법을 그대로 활용되니 찾고자 하는 단어를 정규 표현식으로 찾을 수 있습니다. 

하지만 EmacsW32 를 설치하고 바로 

M-x grep-find 

하고 나면 

  
   M-x grep-find 하면
      grep -r <C> -nH -e . --include=
      /bin/sh: C: No such file or directory
      
      Grep finished with no matches found at 날짜

      또는
      find . -type f -exec grep -nH -e  {} NUL ;
      find: missing argument to `-exec'
      
      Grep finished with no matches found at 날짜

      또는
      find . -type f -print0 | xargs -0 -e grep -nH -e 
      grep: unrecognized option `--color=auto'
      Usage: grep [OPTION]... PATTERN [FILE]...
      Try `grep --help' for more information.
      
      Grep exited abnormally with code 123 at 날짜

이렇게 나오고 안되실 것입니다.  제 경우에는 붉은색으로 나오면서 안 됐습니다. 

그래서 KLDP에서 참조 한 내용을 적어주자면 


2-1 . Emacs 상에서 다음 명령 실행 



      M-x customize-group
      grep




 2-2 .  Grep Highlight Matches 설정 


      Grep Highlight Matches: Value Menu 버튼 누르고 "Not Set"로 변경  state 버튼 누르고 Save for Future Sessions 을 선택해 줍니다.  

2-3 . Grep Find Use Grep R 설정 


      Grep Find Use Grep R: Toggle 버튼 누르고 "off (nil)"로 변경
      state 버튼 누르고 Save for Future Sessions 를 역시 선택해 줍니다. 
      

2-4. DotEmacs (.emacs ) 에서 확인 

  
   (custom-set-variables
      ;; custom-set-variables was added by Custom.
      ;; If you edit it by hand, you could mess it up, so be careful.
      ;; Your init file should contain only one such instance.
      ;; If there is more than one, they won't work right.

      '(grep-find-use-grep-r nil)
      '(grep-highlight-matches nil)
    

의 내용이 추가되어 있는 것을 확인해 줍니다. 

여기까지 하고 테스트 해주면 일단 하위 디렉토리가 없는 경우에서는 제대로 동작합니다. 하지만 하위 디렉토리가 존재하는 경우라면 

      xargs : cannot fork 

에러가 발생하면서 제대로 동작하지 않는 것을 목격합니다. 참고로 저는 MingW 같은것을 설치 안한 순수한 Windows7 환경입니다. 


3. w32shell-shell 설정해 주기 

메뉴상에서 

"Options" -  "Customize EmacsW32" 

를 선택해 줍니다. 그리고 그중에서 w32shell-shell 메뉴를 찾아서 다음 그림과 같이 "Windows cmd.exe" 로 선택해 줍니다. 그리고  "Save for future sessions" 를 클릭해 줍니다. 



자 또 DotEmacs (.emacs) 파일에서 다음과 같이 설정되어 있는지 확인 해 줍니다. 


      (custom-set-variables
      ...  
      '(w32shell-shell (quote cmd))
      ...)



이제 편하게 grep-find (find-grep) 을 사용하시면 됩니다. 



+ Recent posts