【重刊】用 Markdown 做筆記的最佳實現(Vim + Joplin)
date
Apr 14, 2023
slug
vim-joplin
status
Published
tags
re-publish
Vim
lang-zho
summary
(原文發佈於 2020/02/07)Joplin 有可以自定義的 Markdown 語法,可以支持各種網盤、本地路徑、甚至遠程文件夾;它端對端加密(E2EE),這意味著理論上你可以完全不受任何機構的監控,有一個完全安全的環境;它是開源的,意味著你面對的是具有極客精神的開發者大家庭,而開發者永遠不會背叛自己;它跨平台,甚至支持 CLI。最重要的是,它完全免費,而且提供了從 Evernote 轉移的方案。
type
Post
Translation
Joplin 有可以自定義的 Markdown 語法,可以支持各種網盤、本地路徑、甚至遠程文件夾;它端對端加密(E2EE),這意味著理論上你可以完全不受任何機構的監控,有一個完全安全的環境;它是開源的,意味著你面對的是具有極客精神的開發者大家庭,而開發者永遠不會背叛自己;它跨平台,甚至支持 CLI。最重要的是,它完全免費,而且提供了從 Evernote 轉移的方案。
Markdown 和 Evernote:寫作和存檔的初次踫撞
自從 2015 年的某個下午無意間接觸到 Markdown 那符合直覺的語法之後,我便從未停止過使用它作記錄的嘗試。
從課堂筆記到項目日誌、靈感記錄和思維導圖的快速生成,Markdown 似乎都能勝任。於是它成了我生活中不可缺少的部分,甚至連日常書寫中,我都會使用一種經過改造適合手寫的 Markdown 語法。
另一邊,具有便利的存檔和索引功能的 Evernote(或國內的印象筆記),一直是我以鍵盤書寫時倚賴的工具。長久以來,我也養成了整理好的筆記和收集到的材料,都以某種特定的規則歸入 Evernote 的習慣。
可是問題卻出在將兩個兩者結合的時候。
前者 Evernote 筆記的存儲方式,是一種富文字(RTF)的格式。這自然有它的優勢,例如文檔內的圖片等物不需要單獨存儲,且支持豐富的格式和排版。一個 HTML 的網頁,可以簡單地就被轉化爲一篇筆記——這個優勢被 Evernote 的團隊利用起來,而後還開發了和瀏覽器寫作的 Web Clipper,一度成為了收集癖的福音。
可偏偏是這種存儲,導致了很多使用中的不便。其中最明顯的便是排版上的。用戶常常需要花費一些精力來排版收集來的文字,寫作的時候也需要考慮如何利用好富文字。比如簡寫的時候如果採用項目符號(即「•」)排版,經常會碰到縮進不整潔而導致心情變差的情況(對,就是我本人)。
另外想吐槽的一點就是,Evernote 團隊好似為了聽取用戶意見似地建立了用戶論壇,並且把提意見的整個流程變成了用戶間民主投票再轉交開發團隊的樣子,導致小圈子內的人主導了整個軟件生態的模樣。就支持 Markdown 語法一事來說,爭吵快十年了也沒有一點兒氣色。管理層的嬴弱和開發團隊的無能一顯無疑,讓我這樣的老用戶十分心寒(恨不得天天燒高香讓微軟併購它)。
再說說後者。Markdown 的哲學是把排版和寫作分開,讓作者在寫作的時候不用太過分心於與創作內容無關瑣碎事物。這並不是輕排版而重內容,恰恰相反,正是因為排版重要,我們才想把它從寫作中分離出來。Markdown 本身雖然只是一種寫作格式(還稱不上語言),但是卻仰賴於 HTML 的力量。也就是說,使用 Markdown 的人在不接觸其他工具的情況下,也可以做出豐富效果的文檔。再不濟咱還有 CSS 不是?
於是一直以來,我都強迫自己以普通文本的方式在 Evernote 中用 Markdown 寫作。原以為二者會相得益彰,可現實卻恰恰相反,它們在一起反而愈顯彼此的短板。
舉例來說,在 Evernote 中 Markdown 對標題(Title)的標記「#」並不是很顯眼。再者語法中的曖昧的地方,例如兩段文字中是否要插入空行,反而造成了原文檔排版的二次矛盾。
為了解決這些問題,我不得不再設計一些額外的規則。一切都變得本末倒置,我於是開始尋找新的方案。
將鐮刀和錘子合二為一
你看我是開源的 Evernote
Joplin 有很多優點,Evernote 有的它有,Evernote 沒有的它也可以有。
比如可以自定義的 Markdown 語法。可以支持各種網盤(iCloud、Dropbox、OneDrive)、本地路徑、甚至遠程文件夾(Remote Folder)。
它是端對端加密(E2EE)的,這意味著理論上你可以完全不受任何機構的監控,有一個完全安全的環境。
它是開源的,意味著你面對的是具有極客精神的開發者大家庭,而開發者永遠不會背叛自己。
它跨平台,甚至支持 CLI(讓我想起曾經曇花一現的 Evernote CLI)。
最重要的是,它完全免費,而且提供了很多從 Evernote 轉移的方案。
依我看,Evernote 可以繼續用著,而只把一部分的使用情形移植到 Joplin 上。
騎上我心愛的小摩托
從 Evernote 移動筆記/筆記本到 Joplin,主要的手段是通過 Evernote 導出的 .enex 文件。這裡有個 trick,就是我們可以一次只導出部分的筆記。
如圖,導出到 .enex 之後,只要拖拽到 Joplin 中就可以了。用終端的則是
:import /path/to/file.enex
。把 Joplin 用在日常工作中
此處我主要介紹 Joplin 在終端中的使用,主要參考了 官方文檔。
## 和 Vim 協作編輯文檔
我喜歡 Joplin 終端的設計。它很符合 tmux 和 Vim 的邏輯。
終端 Joplin 由三個橫向的 Panel 組成,切換的時候用 *tab* 和 *Shift-Tab*。為了使得它更符合 Vim 的風格(Control + 方向鍵),可以在
~/.config/joplin/keymap.json
中加入以下的設置(完整版見 keymap.json ):這樣就變成了 HJKL 風格了。
選擇好要編輯的筆記之後,回車就會用默認的終端編輯器打開了。對我來說,必然是 Vim。要注意的是編輯中的語法高亮需要加入 vim-markdown.vim,預覽則要 markdown-preview.nvim。
利用 CLI 快速記錄
假設你正在工作環境中(例如 Shell 下、tmux 下或著 Vim 下),不想離開終端,更不想離開現在的窗口,這種情況下 Joplin 的命令行介面就很有幫助了。你可以快速記錄、查詢一些筆記內容。
我在這裡寫了一些例子供你參考。
- 創建一個筆記本 = 為項目建立日誌存儲:
- 創建新筆記並以當前時間命名 = 記錄當前進度:
- 查看已有的筆記:
- 完成當前進度:
更多的命令行,你可以通過
joplin help all
查看。