Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>Search File for Source CodeNew to Visual Studio Code? Get it now.
Search File for Source Code

Search File for Source Code

Irwin Shen

|
6 installs
| (0) | Free
狀態列按鈕:開啟 Find In Files 對話框,用 grep 搜尋(自動偵測 Git for Windows,找不到時使用套件內建的 grep),結果輸出到終端機,Ctrl+點擊即可跳到該行。
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Search File for Source Code

免費、開源(MIT)的 Find In Files 擴充套件。在狀態列加一顆 Find 按鈕,點下去開啟 Find In Files 對話框。對話框的欄位與選項會組成 grep 指令,搜尋結果輸出到「Find In Files」終端機。按住 Ctrl 點擊 路徑:行號 就會開啟檔案並跳到該行。

需求

  • Windows。不需要另外安裝 Git:套件內建 grep,找不到可用的 grep 時會自動改用內建的。

使用的 grep

啟動時會依照下面的順序找 grep,每個候選都會先實際跑一次測試搜尋,通過才使用:

  1. 設定 findInFiles.grepPath
  2. Git for Windows 的 usr\bin\grep.exe(從登錄檔、預設安裝路徑、scoop、PATH 上 git.exe 的位置尋找)
  3. 套件內建的 bin\grep.exe(取自 Git for Windows,授權說明見 bin\NOTICE.txt)
  4. PATH 上其他的 grep.exe

都不能用時,狀態列按鈕會變成 ⚠ Find。

終端機的 grep 指令

PATH 找不到 grep 時,會把套件內建的 grep 加到 Kiro 終端機的 PATH,讓終端機可以直接打 grep。這個做法只影響 Kiro 開的終端機,不會改執行原則,也不會改 PowerShell profile。新開的終端機才會生效。不想要的話,把 findInFiles.terminalGrep 設成 false。

檢查 grep 設定

在 Command Palette 執行 Find: 檢查 grep 設定,會重新偵測,並把結果寫到「Find In Files」輸出視窗:

  • 搜尋用的是哪一支 grep、版本、來源,以及每個候選失敗的原因
  • Kiro 終端機的 grep 設定狀態
  • PowerShell profile 裡的 Set-Alias grep ... 是否指向不存在的檔案。如果有,可以一鍵修正:有 Git for Windows 就改指向它,沒有就停用該行。修正前會先備份成 .find-in-files.bak。

使用

  • 點左下角狀態列的 Find,或在 Command Palette 執行 Find: Find In Files (grep)。
  • Find 欄位預設帶入目前選取的文字或游標所在的單字。
  • File types 用 ; 分隔,例如 *.sdl;*.c;*.h;*.* 或留空代表全部檔案。大小寫不同的副檔名(*.sdl / *.SDL)都會搜尋到。
  • In 可以填多個資料夾,用 ; 分隔;... 開啟資料夾選擇視窗。
  • Enter 執行搜尋,Esc 關閉對話框;在欄位按 ↓ 可叫出歷史紀錄。
  • 搜尋中在結果終端機按 Ctrl+C 可取消。

選項對應的 grep 參數

選項 grep 參數
Match whole word only -w
Match case 不勾時加 -i
Wildcard search * ? 轉成 -E 的 .* .
Regular expressions -E
其他情況 -F(純文字)
Look in subfolders -r,File types 轉成 --include
Exclude files and folders --exclude / --exclude-dir(結尾加 \ 只排除資料夾)
List matching file names only -l

固定會加 -I(略過 binary 檔)與 -s(不顯示無法讀取的檔案錯誤),並以 LC_ALL=C 執行,讓含 Big5 等非 UTF-8 內容的檔案也能正常顯示比對到的行。

UTF-16 檔案(.uni 等)

grep 以位元組比對,UTF-16 檔案(EDK II 的 .uni 大多是這種格式)裡每個 ASCII 字元後面都夾著 00,而且會被 -I 當成 binary 跳過,所以單靠 grep 永遠找不到。搜尋時會多跑一輪 grep -l -a,找出含 NUL 位元組的檔案,再依檔頭(BOM 或 00 的分布)判斷是否為 UTF-16LE / UTF-16BE,是的話解碼後逐行比對:

  • 結果格式與 grep 相同,接在 grep 的結果後面,一樣可以 Ctrl+點擊跳到該行。
  • 選項(大小寫、整個單字、Wildcard、正規表示式、只列檔名)比照 grep 的行為;正規表示式以 JavaScript 解讀,常用的 [[:alpha:]] 這類 POSIX 字元類別與 \< \> 會自動轉換。
  • 有搜到 UTF-16 檔案時,結尾的統計會註明搜尋了幾個 UTF-16 檔案。

設定

  • findInFiles.grepPath:grep.exe 的完整路徑;留空自動尋找。
  • findInFiles.terminalGrep:PATH 找不到 grep 時,是否把內建 grep 加到 Kiro 終端機的 PATH(預設 true)。

重新打包

bin\ 需要有 grep.exe、msys-2.0.dll、msys-iconv-2.dll、msys-intl-8.dll、msys-pcre-1.dll(從 C:\Program Files\Git\usr\bin 複製)。

powershell -NoProfile -ExecutionPolicy Bypass -File .\build-vsix.ps1
kiro --install-extension .\search-file-for-source-code-0.2.2.vsix --force

授權

本套件免費使用,程式碼以 MIT 授權釋出,見 LICENSE.txt。bin\ 內建的 grep 與 msys DLL 取自 Git for Windows,未經修改,各自沿用原本的授權(GPL / LGPL / BSD),原始碼取得方式見 bin\NOTICE.txt。

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft