helm-ag에서 빠른 검색 (GNU Emacs/Cygwin)

4384 단어 CygwinEmacs
Helm-ag에서 파일을 빠르게 검색하고 감동했으므로 설치 절차를 기록해 둡니다.
실수 등 있으면 지적해 주시면 다행입니다.

[환경] Windows7/Cygwin/GNU Emacs24.3

ag.exe 만들기



준비 (Shift-JIS, EUC-JP 대응)



ag (the silver searcher)는 utf-8 텍스트 파일 만 검색합니다.
Shift-JIS와 EUC-JP의 텍스트 파일도 대상에 포함하도록 패치 한 Ver이있었습니다.

ag (The Silver Searcher)에서 EUC-JP / Shift-JIS 파일도 검색 할 수 있도록 시도 - Thinking-megane

그러나, 빌드가 지나가지 않았습니다…
리노베이션 포인트는 src/util.에서만 사용되었으므로 src/util.을 master 프로젝트로 대체하여 master 프로젝트를 빌드했습니다.
monochromegane/the_silver_searcher at detect-japanese-char-set · GitHub
↑ 여기에서 src/util.c 및 src/util.h 복사
ggreer/the_silver_searcher · GitHub
마스터 프로젝트를 clone하여 복사한 파일을 바꿉니다.

빌드



cygwin을 시작하고 silver searcher 디렉토리로 이동하여 build.sh를 실행합니다.
cd the_silver_searcher
./build.sh

빌드가 끝나면 생성 된 ag.exe를 cygwin/bin에 복사합니다.
cp ./ag.exe /bin/

↓ 빌드가 통과하지 않는 경우, 이쪽의 페이지가 참고가 될까 생각합니다
Windows Cygwin 환경의 The Silver Searcher (ag.exe) 빌드 방법 - Geek Nooblog

Emacs 설정



emacs에서 ag.exe 경로를 통과



emacs에서 M-x getenv path를 실행하고 path 값에 C :\cygein\bin;이 포함되어 있지 않으면 .emacs에/cygwin/bin 디렉토리를 path에 추가하는 코드를 추가합니다.

.emacs
;;/cygwin/binをパスを通す
(setenv "PATH" ("C:\cygein\bin;" (getenv "PATH")))

helm-ag.el 얻기



cygwin에서 다음 명령을 실행합니다.bash:
git clone https://github.com/syohex/emacs-helm-ag.git

.emacs에 helm-ag 설정 추가



helm-ag_sample.el
;必要であればload-pathにhelm-agディレクトリを追加
;(add-to-list 'load-path "C:\Dropbox/.emacs.d/elisp/emacs-helm-ag")

(require 'helm-config)
(require 'helm-files)
(require 'helm-ag)
; agのデフォルトのコマンドオプションを指定
; -nを消すとサブディレクトリも再帰的に検索します
(setq helm-ag-base-command "ag --nocolor --nogroup -n")

;Alt+sでag実行
(define-key global-map [(M s)] 'helm-ag)


동작 이미지



Dired에서 M-s → "ag --nocolor --nogroup -n"을 실행 한 결과.



파일 내 검색의 경우 M-x helm-ag-this-file을 사용합시다.

신경이 쓰이는 점



Dired 버퍼의 문자 코드가 utf-8이므로,
"ag --nocolor --nogroup -n 한다"
"하는"은 utf-8입니다.
(검색 명령의 문자 코드는 현재 버퍼의 문자 코드를 인수하는 것 같습니다)
따라서이 경우 Shif-JIS 나 EUC-JP 파일 내의 "한다"는 히트하지 않습니다.
다른 문자 코드로 검색하려면 C-x RET f (또는 M-x set-buffer-file-coding-system RET)를 사용하여 현재 버퍼의 문자 코드를 변경 → helm-ag를 다시 실행해야합니다.

참고



helm-ag 저자의 페이지. 감사합니다
helm-ag를 썼다 - Life is very short

좋은 웹페이지 즐겨찾기