以前用 id-utils 為底, 寫了個小程式 gj, 用來搜索目錄下的關鍵字。基本上 gj 已滿足我八成的需求, 不過有時還是覺得若能在vim 內搜尋就更方便, 不用複製目前游標下的字串、開新視窗、貼上字串、執行 gj。
最近找到 ack.vim, 發現完全符合我的需求, 只不過它是用 ack 搜尋, 不是用 id-utils, 檔案多的時候搜尋速度較慢。ack.vim 用 vim 的 grep + quickfix 達成目的, 只要改用 id-utils 作索引和搜尋即可, 剩下部份可直接拿來用, 沒花多少工夫就改好了。
安裝方式如下:
- sudo apt-get install id-utils
- wget https://raw.github.com/fcamel/configs/master/.vim/plugin/ack.vim && mv ack.vim /.vim/plugin/
- wget https://raw.github.com/fcamel/configs/master/bin/gid_with_col.py && chmod +x gid_with_col.py && mv gid_with_col.py /bin
$ cat << EOF >> ~/.vimrc let g:ackprg="gid_with_col.py" nnoremap <silent> <Leader>g :Ack<CR> EOF
- $ cd /path/to/project && mkid # 建立索引
用法參見 ack.vim:
o to open (same as enter) go to preview file (open but maintain focus on ack.vim results) t to open in new tab T to open in new tab silently v to open in vertical split gv to open in vertical split silently q to close the quickfix window不過我將 t 的功能註解掉了, 需要的人請自行修改 ack.vim 去掉註解。
另外參考 ag: the silver searcher ;-) 最近才知道這個也比 Ack 快。 http://geoff.greer.fm/2011/12/27/the-silver-searcher-better-than-ack/ search also ag.vim
回覆刪除謝啦, 不過 id-utils 有先建 index 再做搜尋, 基本上已快到無法超越的地步了, 符合搜尋的結果不多的話, 都是 0.1s 以內完成。
回覆刪除Btw, 之前好像是聽 Thinker 推薦才知道 id-utils 的
正好這幾天我也在 survey 相關的訊息,目的是加快搜尋大型 codebase (如 android SDK) 的速度,找到了一個叫 OpenGrok 的 tool, stackoverflow 也有人推薦,只是安裝有點麻煩,但是功能很不錯,可以一起試試
回覆刪除id-utils 安裝和設定都簡單, 速度也超快, 用起來相當滿意。之後有別的需求時再來看看 OpenGrok, 謝啦
回覆刪除