跳到內容

編輯器

網頁版的筆記介面在筆記上方有一個 閱讀檢視/編輯 切換鈕。閱讀檢視負責豐富 的渲染;編輯則是用於撰寫 markdown 的純 CodeMirror 6 文字輸入。

檢視器是一套為相容 Obsidian 而設計的 remark/rehype 堆疊。只要在 Obsidian 中 能渲染,在這裡就應該能渲染。

  • CommonMark + GFM:標題、清單、表格、圍欄程式碼區塊、刪除線、任務清單
  • Wikilink:[[Note Title]] 與 [[Note Title|Display Text]], 渲染為指向 /notes/<path> 的連結
  • 圖片嵌入:![[image.png]] 會解析到需驗證的附件 API
  • Callout:Obsidian 風格的 > [!note]、> [!warning]、 > [!tip] 等,透過 @portaljs/remark-callouts 實現
  • KaTeX 數學式:$inline$ 與 $$display$$
  • Mermaid 圖表:圍欄 ```mermaid 區塊
  • 語法醒目提示:圍欄程式碼區塊以 rehype-highlight 渲染
  • Frontmatter:檔案最上方的 YAML 以 gray-matter 解析,內文則顯示在其下方
  • 自動連結的標題:每個標題都會取得 slug 與錨點連結

編輯模式會換成一個 CodeMirror 6 輸入框,搭配 markdown 語言外掛(語法醒目提示)、 自動換行,以及可避免 iOS Safari 自動縮放的行動裝置安全 16px 字型。

沒有儲存按鈕。編輯器會在你輸入時 自動儲存:筆記上方的狀態指示在寫入進行中 顯示 Saving…,寫入完成後顯示 Saved,若寫入出錯則顯示 Save failed 並附上 可點選的 Retry 連結。

網頁編輯器刻意定位為快速記錄的介面:打開筆記、編輯、離開。若需要更豐富的創作 功能(斜線選單、編輯器內的尋找/取代、wikilink 與標籤自動完成),Obsidian 才是 合適的工具。這樣的分工是刻意設計,而非功能缺口;Obsidian 本身就是出色的編輯器, 而且我們原生同步到它,所以網頁版專注於從 Obsidian 難以做好的事(跨知識庫瀏覽、 不需 Obsidian iOS 應用程式的行動存取,以及隨處可用的瀏覽器存取)。

網頁編輯器與外掛使用同一套同步引擎。如果你開著某則筆記時,另一台裝置編輯了同一 則筆記,編輯器會在不遺失你的工作的前提下做出回應:

  • 傳入的遠端編輯會透過三方合併併入你開啟中的草稿。乾淨的合併會悄悄完成。
  • 如果你的儲存與另一台裝置的寫入競爭,後端會回傳 409。編輯器會取得最新版本、 透過三方合併把你的編輯重新套用在其上,並自動重試儲存。
  • 當合併出現真正的行級重疊時,你的草稿會保持原樣,並出現不會阻擋操作的 ConflictBar,提供三個選項:Keep mine、Take theirs 或 View merge。不會有任何內容被悄悄捨棄。

任何依賴 Obsidian 社群外掛的內容(Dataview 查詢、Templater 輸出、自訂 canvas 擴充、Excalidraw 圖形等)都不會在網頁編輯器中執行。 網頁版內建自己的渲染 器;它無法執行來自你 Obsidian 安裝的外掛程式碼。Dataview 區塊會以純圍欄程式碼 渲染,Templater 語法則保持未解析,依此類推。

依賴外掛渲染的筆記仍然安全。它們會以純 markdown 同步,並在 Obsidian 中正確 顯示,只是在網頁版檢視時沒有動態渲染。

外掛相容性是我們可能在未來的大版本中探索的方向,但目前不在規劃中。

編輯器 支援觸控,但受限於小螢幕。需要大量編輯時,手機上通常以 Obsidian 行動版較合適。在網頁版進行快速編輯與搜尋則沒有問題。