用 vi 來管理 wiki 筆記
作為一個軟體開發人員,使用同編碼一樣的工具來寫筆記會更加簡單。我想將我的筆記變成一種編輯器命令,無論我在哪裡,都能夠用管理我程式碼的方法來管理我的筆記。這便是我建立一個基於 vi 的環境來搭建我自己的知識庫的原因。簡單概括起來,我在膝上型電腦上用 vi 外掛 Viwiki 來本地管理我的 wiki。用 Git 來進行版本控制(以保留一箇中心化的更新版本),並用 GitLab 來進行線上修改(例如在我的手機上)。
為什麼用 wiki 來進行筆記儲存是有意義
我嘗試過許多不同的工具來持續的記錄我的筆記,筆記裡儲存著我的靈感以及需要記住的任務安排。這包括線下的筆記本 (沒錯,紙質的)、特殊的記錄筆記的軟體,以及思維導圖軟體。
但每種方案都有不好一面,沒有一個能夠滿足我所有的需求。例如思維導圖,能夠很好的形象化你的想法(因而得名),但是這種工具的搜尋功能很差(和紙質筆記本一樣)。此外,當一段時間過去,思維導圖會變得很難閱讀,所以思維導圖不適合長時間儲存的筆記。
我為一個合作專案配置了 DokuWiki,我發現這個 wiki 模型符合了我大多數的需求。在 wiki 上,你能夠建立一個筆記(和你在文字編輯器中所作的一樣),並在筆記間建立連結。如果一個連結指向一個不存在的頁面(你想讓本頁面新增一條還沒有建立的資訊), wiki 會為你建立這個頁面。這個特性使得 wiki 很好的適應了那些需要快速寫下心中所想的人的需求,而仍將你的筆記保持在能夠容易瀏覽和搜尋關鍵字的頁面結構中。
這看起來很有希望,並且配置 DokuWiki 也很容易,但我發現只是為了記個筆記而配置整個 wiki 需要花費太多工作。在一番搜尋後,我發現了 Vimwiki,這是一個我想要的 vi 外掛。因為我每天使用 vi,記錄筆記就行編輯程式碼一樣。甚至在 vimwiki 建立一個頁面比 Dokuwiki 更簡單。你只需要對游標下的單詞按下回車鍵就行。如果沒有檔案是這個名字,vimwiki 會為你建立一個。
為了更一步的實現用每天都會使用的工具來做筆記的計劃,我不僅用這個我最愛的 IDE 來寫筆記,而且用 Git 和 GitLab —— 我最愛的程式碼管理工具 —— 在我的各個機器間分發我的筆記,以便我可以線上訪問它們。我也是在 Gitlab 的線上 markdown 工具上用 markdown 語法來寫的這篇文章。
配置 vimwiki
用你已有的外掛管理工具來安裝 vimwiki 很簡單,只需要新增 vimwiki/vimwiki 到你的外掛。對於我的喜愛的外掛管理器 Vundle 來說,你只需要在 /.vimrc 中新增 plugin vimwiki/vimwiki 這一行,然後執行 :source ~/.vimrc | PluginInstall 就行。
下面是我的檔案 .vimrc 的一部分,展示了一些 vimwiki 配置。你能在 vimwiki 頁面學到更多的配置和使用的的資訊。
let wiki_1={}
let wiki_1.path='~/vimwiki_work_md/'
let wiki_1.syntax='markdown'
let wiki_1.ext='.md'
let wiki_2={}
let wiki_2.path='~/vimwiki_personal_md/'
let wiki_2.syntax='markdown'
let wiki_2.ext='.md'
let g:vimwiki_list=[wiki_1, wiki_2]
let g:vimwiki_ext2syntax={'.md': 'markdown', '.markdown': 'markdown', '.mdown': 'markdown'}
如你在上述配置中所見,我的配置還有一個優點。你能簡單的區分個人和工作相關的筆記,而不用切換筆記軟體。我想讓我的個人筆記可以隨時隨地訪問,而不想我的工作筆記同步到我私人的 GitLab 和計算機中。在 vimwiki 這樣配置要比我試過的其他軟體都要簡單。
這個配置告訴 vimwiki 有兩個不同 Wiki,都使用 markdown 語法(再一次,因為我的日常工作中天天都在用 markdown 語法)。我也告訴 Vimwiki 在哪個資料夾儲存 wiki 頁面。
如果你進入儲存 wiki 頁面的資料夾,你會找到你的 wiki 的普通的 markdown 頁面檔案,而沒有其他特殊的 Vimwiki 相關內容,這使得很容易的初始化 Git 倉庫和同步你的 wiki 到中心倉庫。
同步你的 wiki 到 GitLab
這一步檢出一個 GitLab 專案到本地的 VimWiki 資料夾,這步操作和你操作任何 GitHub 的倉庫相同,只不過因為我更喜歡儲存我的筆記到我的私人 GitLab 倉庫,所以我運行了一個 GitLab 例項用於我個人的專案。
GitLab 的 wiki 功能可以用來為你的專案建立 wiki 頁面。這些 wiki 就是 Git 倉庫本身。它們使用 markdown 語法,你懂得。
只需要初始化你需要的 wiki ,讓它與你為筆記而建立的專案的 wiki 同步即可。
cd ~/vimwiki_personal_md/
git init
git remote add origin [email protected]:your_user/vimwiki_personal_md
git add .
git commit -m "Initial commit"
git push -u origin master
在 GitLab 建立一個新的專案後,你就可以從頁面上覆制這些步驟的程式碼。唯一的改變是倉庫地址結尾是 (而不是 .git)。 這會告訴 Git 克隆 wiki 倉庫而不是專案本身。
就是這樣!現在你能夠通過 Git 來管理你的筆記,通過 GitLab wiki 使用者介面來修改筆記。
你可能(像我一樣)不想手動的為每個新增到筆記本的筆記建立一個提交。為了解決這個問題,我使用了 Vim 外掛 chazy/dirsetting。我新增一個 .vimaddr 檔案,已經下面的內容:
:cd %:p:h
silent! !git pull > /dev/null
:e!
autocmd! BufWritePost * silent! !git add .;git commit -m "vim autocommit" > /dev/null; git push > /dev/null&
每當我開啟 Wiki 檔案按下 :w 釋出我的修改時,它就會更新到最新的版本。這樣做會使你的本地檔案與中心倉庫保持同步。如果你有合併衝突,通常你需要解決它們。
目前,這就是以我的知識來互動的方法,我很喜歡這方法;請告訴我你對於這個方法的想法,可以在評論區分享你如何追蹤筆記的方法。