markdooown
在 VS Code 底部面板即時預覽目前開啟的 Markdown 檔案。
原始碼:https://github.com/lazyjerry/markdown-ext
使用方式
- 開啟任一
.md 檔案(文字編輯或預覽模式都可以)。
- 在底部 Panel 點 markdooown 分頁(開啟書本的圖示),或執行指令
markdooown: Show Preview Panel。
- 標題列右側有兩顆按鈕:自動刷新(開關,預設關閉)與 預覽(更新到目前分頁的內容)。
自動刷新與手動刷新
|
自動刷新 開 |
自動刷新 關(預設) |
切換到另一份 .md |
預覽跟著換 |
畫面停在原本的內容,預覽 暗下來 |
| 切換到非 Markdown 的分頁 |
預覽暫停 |
畫面停在原本的內容,預覽 暗下來 |
| 編輯顯示中的檔案 |
邊打字邊更新 |
畫面不動,預覽 暗下來 |
| 按 預覽 |
重畫一次 |
更新到目前分頁的內容,按鈕恢復 active |
- 預覽 按鈕亮著(active)代表畫面就是目前分頁該有的內容;暗下來代表已經過時,點一下就追上。
- 自動刷新的開關會記住,下次開啟面板沿用。
- 面板收起再打開、或關掉再開,畫面會回到收起前的那一份內容。
搜尋
標題列檔名右邊的搜尋框可在預覽內找字,與兩顆按鈕同一列,不另外佔用閱讀空間。
| 操作 |
按鍵 |
| 跳到搜尋框(焦點在面板內時) |
⌘F/Ctrl+F |
| 下一個/上一個(到底繞回) |
Enter/Shift+Enter,或點 ↑ ↓ |
| 清除 |
Esc |
- 不分大小寫,所有結果都會標示,目前那一筆顏色較深;搜尋框內顯示「第幾筆/共幾筆」,找不到顯示「無結果」。
- 結果在收合的
<details> 內會自動展開;在可橫向捲動的程式碼區塊或表格內會捲過去。
- 預覽內容更新時保留關鍵字並重新比對,不會捲動畫面。
- 面板收起後 webview 會被回收,關鍵字不保留。
行為
- 跟隨目前作用中的分頁;
.md 以預覽模式開啟、或焦點移到面板內時,都照樣顯示該檔案。
- 自動刷新開啟時,編輯會同步更新(約 120ms 合併一次,超過 20 萬字元的檔案放寬為 400ms);同一份文件更新時保留捲動位置。
- 支援 CommonMark、GFM 表格、刪除線、自動連結、任務清單、標題錨點、YAML front matter(畫成欄位表)、程式碼語法高亮、內嵌 HTML(清洗後顯示,見下方〈安全〉)與相對路徑圖片。
- 點擊連結:
http/https/mailto 用瀏覽器開啟;相對路徑的檔案在編輯器開啟(開的是 .md 就會接著預覽它);#錨點 在預覽內捲動。
安全
- 內嵌 HTML 經 DOMPurify 清洗:腳本、事件屬性、
<style>、<form>、<meta>、<base>、<iframe>、<object>、<embed>、<link> 與 style 屬性都會被移除;<details>、<kbd>、<br>、<img>、<sub>、align 這類常見寫法照常顯示。
- 相對路徑連結只開啟工作區資料夾內、或文件所在目錄之下的檔案;
vscode: 等其他 scheme 不處理。
- 受限模式(Restricted Mode)的工作區不啟用本擴充。
設定
| 設定 |
預設 |
說明 |
markdooown.allowRemoteImages |
true |
自動載入 https: 遠端圖片。關閉後只顯示本機與 data: 圖片,文件內的遠端圖片無法用來追蹤你何時開啟了文件。 |
效能
- 只在面板被開啟(或執行指令)時才啟動擴充,平時不載入。
- 面板可見才訂閱分頁切換與文件變更事件;面板收起即全部釋放,不做任何更新。
- 關閉自動刷新時,切換分頁與編輯都不會重新渲染,只更新按鈕狀態。
- 未設定
retainContextWhenHidden,面板收起後 webview 會被回收,重新顯示時由擴充重送最後的內容。
- Markdown 解析在 webview 內進行,extension host 只傳文字。
開發
npm install
npm run check # lint + build + 單元測試
./scripts/install-local.sh # 打包並安裝到預設 profile
./scripts/install-local.sh --all-profiles # 加上本機所有自訂 profile
./scripts/install-local.sh --fast # 跳過 lint 與測試
./scripts/publish.sh patch # 發布階段一:bump 版本、搬移 CHANGELOG
./scripts/publish.sh # 發布階段二:檢查、打包、稽核、上傳 Marketplace
授權
Apache-2.0
| |