Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>At Line RefNew to Visual Studio Code? Get it now.
At Line Ref

At Line Ref

workjerry

|
3 installs
| (0) | Free
以快捷鍵複製目前檔案與選取行的參照(@path#L10-20),或在 GitHub/GitLab/Bitbucket 開啟目前分支的檔案網頁。
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

At Line Ref

以快捷鍵複製目前檔案與選取行的參照(@src/a.ts#L10-20),或直接在 GitHub/GitLab/Bitbucket 開啟目前分支的檔案網頁並定位到選取行。

原始碼與問題回報:https://github.com/lazyjerry/copy-line-ref-ext

功能

  • 複製行參照:Cmd+Alt+R(Windows/Linux Ctrl+Alt+R)把 @<路徑>#L<起>-<迄> 寫進剪貼簿。路徑相對於檔案所在的工作區資料夾;檔案不在任何工作區資料夾時退回絕對路徑,不會像原版 Copy Line Reference 那樣直接放棄。
  • 只有選了文字才帶行號:游標停在某行而沒有選取,只給 @<路徑>;單行選取給 #L15;跨行給 #L15-20。整行選取(shift+↓、三擊)結尾落在下一行開頭時,那一行不會被多算進去。
  • 在遠端網頁開啟目前檔案:Cmd+Alt+O(Windows/Linux Ctrl+Alt+O)用預設瀏覽器開啟該檔案在目前分支的網頁,有選取就帶行號錨點。支援 GitHub、GitLab、Bitbucket,自架站可用設定指定格式。
  • 只在遠端真的有這份內容時才開:沒有 git 儲存庫、detached HEAD、分支沒有 upstream、本機有尚未推送的 commit、檔案尚未加入追蹤、遠端網址不是網頁(本機路徑)——都會跳訊息說明原因而不是開出一個 404。檔案有未提交的修改或本機落後遠端時仍會開,但另外警告行號可能對不上。
  • 右鍵選單:編輯器內右鍵與檔案總管的檔案右鍵都有這兩個指令;從檔案總管觸發沒有選取,複製的是純路徑、開的是檔案頁。
  • 只在受信任的工作區內查 git:遠端偵測直接呼叫 git CLI,不依賴內建 Git extension;但只對目前工作區資料夾內(symlink 解開後比對)、且工作區已受信任的檔案執行。工作區外的檔案仍可複製行參照,按 Cmd+Alt+O 則提示「檔案不在工作區內,未查詢 git」。原因是 git 會依儲存庫自己的 .git/config 執行外部指令(例如 filter.<名>.clean),外來目錄的設定不該被觸發。

使用方式

  1. 在編輯器選取要參照的行(或不選,只要檔案),按 Cmd+Alt+R,右下角會跳出通知顯示複製的內容。
  2. 按 Cmd+Alt+O 在瀏覽器開啟同一段程式碼的遠端頁面。被拒絕時看訊息:通常是還沒 git push。
  3. 從命令面板也可執行「At Line Ref: 複製行參照」與「At Line Ref: 在遠端網頁開啟目前檔案」。

快捷鍵

指令 macOS Windows/Linux
複製行參照 Cmd+Alt+R Ctrl+Alt+R
在遠端網頁開啟目前檔案 Cmd+Alt+O Ctrl+Alt+O

兩組都只在文字編輯區有焦點時生效(editorTextFocus)。已知的撞鍵:

  • 與 Marketplace 上的 Copy Line Reference(reily.copy-line-reference)同為 Cmd+Alt+R,兩者只留一個。
  • macOS 內建 ⌥⌘R 是 Find 面板的「切換 Regex」,只在文字編輯區有焦點時被本擴充蓋掉,在 Find 輸入框內仍正常。
  • Windows/Linux 的 Ctrl+Alt+R 與 PHP Namespace Resolver 的 Remove Unused 相同。

要改鍵的話在 Keyboard Shortcuts 搜尋 copyLineRef。

設定

設定鍵 說明
copyLineRef.hosts 自架 git 主機對應的網頁格式,鍵為 hostname,值為 github/gitlab/bitbucket。例:{"git.example.com": "gitlab"}。github.com、gitlab.com、bitbucket.org 免設定;hostname 含 gitlab/github/bitbucket 字樣的自架站也會自動猜。
git.path 沿用 VS Code 內建設定;沒設就用 PATH 上的 git。

網址格式

託管服務 檔案頁 單行 多行
GitHub /blob/<分支>/<路徑> #L10 #L10-L20
GitLab /-/blob/<分支>/<路徑> #L10 #L10-20
Bitbucket /src/<分支>/<路徑> #lines-10 #lines-10:20

分支用的是 upstream 的遠端分支名(本機 feat 追蹤 origin/feature-x 時開 feature-x)。

與 GitLens 的重疊

GitLens 右鍵選單的「Open on Remote (Web) → Open File on Remote」和 Cmd+Alt+O 做同一件事:開目前檔案的遠端網頁,有選取就帶行號。兩者不撞鍵(GitLens 的 gitlens.openFileOnRemote 預設沒有綁鍵),但功能重疊,已裝 GitLens 的話右鍵會看到兩個「在遠端開啟」。

本擴充多做的:

  • 開之前先確認遠端真的有這份內容:沒有 upstream、本機有未推送 commit、檔案 untracked 等情況會擋下並說明原因;GitLens 直接組網址開出去,還沒 push 就是 404。
  • 分支用 upstream 的遠端分支名,不是本機分支名。
  • Cmd+Alt+R 的 @path#L 參照格式,GitLens 沒有對應功能(它的 Copy Remote File URL 複製的是網址)。

GitLens 多做的:「Open File on Remote From...」可挑別的分支、tag 或 commit,「Open Commit on Remote」開 commit 頁,以及整套 blame/history/compare。只需要基本的開遠端且不在意 404 的話,兩者擇一即可;要收掉 GitLens 那個右鍵項目可調 gitlens.menus。

限制

  • 「已同步」看的是本機的遠端追蹤分支,也就是上次 fetch/push 的結果;別人推上去的新 commit 要 fetch 後才反映。本擴充不會自己 fetch。
  • 需要本機有 git 執行檔;Remote/WSL 情境下以 extension host 那端的 git 為準。

專案結構

src/
├── extension.ts              # 唯一 import vscode 的檔案:兩個指令的接線與訊息
├── git/gitQuery.ts           # 跑 git CLI 組出判斷輸入(有副作用,不進 core)
└── core/                     # 純 Node 純函式,不 import vscode(單元測試主體)
    ├── reference/            # 相對/絕對路徑、@path#L 格式
    ├── git/                  # git status v2 解析、遠端網址解析、同步判斷決策表
    └── web/                  # 託管服務判定、檔案網址組合

開發

git clone https://github.com/lazyjerry/copy-line-ref-ext.git
cd copy-line-ref-ext
npm install
npm run build                 # typecheck + esbuild
npm run test:unit
npm run test:integration      # 會在 /private/tmp 建暫存 git repo 驗遠端判斷
npm run package:vsix

按 F5 啟動 Extension Development Host 手動測試。

授權

Apache-2.0

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