快速找原始碼的好幫手:The Silver Searcher

今天要介紹的是一個方便的小工具,它的功能非常單純,就是「搜尋程式原始碼」。有些人可能會覺得,這種事情不是交給 IDE 就好了嗎?其實,你可以把 the silver searcher 想成是「強化版的 grep」,也就是說只要你平常工作有用到終端機,就很適用。

安裝

mac 上可以直接用 homebrew 安裝(其他系統請參考官方文件 https://github.com/ggreer/the_silver_searcher):

brew install the_silver_searcher

安裝後,你平常怎麼用 grep,就把指令換成 ag 來用,大致上可以無痛轉換。詳細指令列表可見 ag -h,常用的選項有:

  • --hidden:一併搜尋隱藏檔案,如 .env
  • -u:一併搜尋被 ignore 的檔案
  • -s:case sensitive
  • -i:case insensitive(預設值)

給文組的科普時間:為什麼工具叫 silver searcher 但指令卻是 ag 呢?其實只是因為 Ag 是銀元素的化學符號啦。

強化版的 grep

說是強化版的 grep,那到底是強在哪裡呢?正確的說,它是專門為程式開發者的需求特化過的搜尋工具:

搜尋速度超快

聽說 benchmark 容易引戰,因此關於速度的實測還請自行參閱官方報告。不過以筆者自己的體感經驗,ag 確實是比 grep 快很多。像是接手別人的大型 code base 或是沒有文件的開源專案,只能從少數線索往回推找原始碼時,用它來大海撈針就非常方便。

可控制的雜訊

除了速度之外,對於開發者來說,the silver searcher 大勝 grep 的一點就是它支援 .gitignore!以前很常發生的一個狀況就是會查到太多「關鍵字符合,但這裡沒你的事」的資訊(例如 log file),改用 ag 之後,這種雜訊就大幅減少了。

說個秘訣:把 *.min.js 放在自訂的 .ignore 後會覺得人生是彩色的(感動)

顯示程式行數

對於像筆者這種偏好陽春開發環境,誓死不依賴外掛的人來說,有這樣的搜尋結果就非常夠用了:

ag search result

小結

如果你經常從終端機找原始碼 其實筆者也拿來爬過對話紀錄,超方便的,那 the silver searcher 絕對會是增加生產力的好幫手,誠心向各位推薦 XD