作為一個(gè)軟件開發(fā)人員,使用同編碼一樣的工具來寫筆記會(huì)更加簡單。我想將我的筆記變成一種編輯器命令,無論我在哪里,都能夠用管理我代碼的方法來管理我的筆記。這便是我創(chuàng)建一個(gè)基于 vi 的環(huán)境來搭建我自己的知識(shí)庫的原因。簡單概括起來,我在筆記本電腦上用 vi 插件 Viwiki 來本地管理我的 wiki。用 git 來進(jìn)行版本控制(以保留一個(gè)中心化的更新版本),并用 gitlab 來進(jìn)行在線修改(例如在我的手機(jī)上)。
我嘗試過許多不同的工具來持續(xù)的記錄我的筆記,筆記里保存著我的靈感以及需要記住的任務(wù)安排。這包括線下的筆記本 (沒錯(cuò),紙質(zhì)的)、特殊的記錄筆記的軟件,以及思維導(dǎo)圖軟件。
但每種方案都有不好一面,沒有一個(gè)能夠滿足我所有的需求。例如思維導(dǎo)圖,能夠很好的形象化你的想法(因而得名),但是這種工具的搜索功能很差(和紙質(zhì)筆記本一樣)。此外,當(dāng)一段時(shí)間過去,思維導(dǎo)圖會(huì)變得很難閱讀,所以思維導(dǎo)圖不適合長時(shí)間保存的筆記。
我為一個(gè)合作項(xiàng)目配置了 DokuWiki,我發(fā)現(xiàn)這個(gè) wiki 模型符合了我大多數(shù)的需求。在 wiki 上,你能夠創(chuàng)建一個(gè)筆記(和你在文本編輯器中所作的一樣),并在筆記間創(chuàng)建鏈接。如果一個(gè)鏈接指向一個(gè)不存在的頁面(你想讓本頁面添加一條還沒有創(chuàng)建的信息), wiki 會(huì)為你建立這個(gè)頁面。這個(gè)特性使得 wiki 很好的適應(yīng)了那些需要快速寫下心中所想的人的需求,而仍將你的筆記保持在能夠容易瀏覽和搜索關(guān)鍵字的頁面結(jié)構(gòu)中。
這看起來很有希望,并且配置 DokuWiki 也很容易,但我發(fā)現(xiàn)只是為了記個(gè)筆記而配置整個(gè) wiki 需要花費(fèi)太多工作。在一番搜索后,我發(fā)現(xiàn)了 vimwiki,這是一個(gè)我想要的 vi 插件。因?yàn)槲颐刻焓褂?vi,記錄筆記就行編輯代碼一樣。甚至在 vimwiki 創(chuàng)建一個(gè)頁面比 Dokuwiki 更簡單。你只需要對光標(biāo)下的單詞按下回車鍵就行。如果沒有文件是這個(gè)名字,vimwiki 會(huì)為你創(chuàng)建一個(gè)。
為了更一步的實(shí)現(xiàn)用每天都會(huì)使用的工具來做筆記的計(jì)劃,我不僅用這個(gè)我最愛的 ide 來寫筆記,而且用 Git 和 GitLab —— 我最愛的代碼管理工具 —— 在我的各個(gè)機(jī)器間分發(fā)我的筆記,以便我可以在線訪問它們。我也是在 Gitlab 的在線 markdown 工具上用 markdown 語法來寫的這篇文章。
用你已有的插件管理工具來安裝 vimwiki 很簡單,只需要添加 vimwiki/vimwiki 到你的插件。對于我的喜愛的插件管理器 Vundle 來說,你只需要在 /.vimrc 中添加 plugin vimwiki/vimwiki 這一行,然后執(zhí)行 :source ~/.vimrc | PluginInstall 就行。
下面是我的文件 .vimrc 的一部分,展示了一些 vimwiki 配置。你能在 vimwiki 頁面學(xué)到更多的配置和使用的的信息。
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'}
如你在上述配置中所見,我的配置還有一個(gè)優(yōu)點(diǎn)。你能簡單的區(qū)分個(gè)人和工作相關(guān)的筆記,而不用切換筆記軟件。我想讓我的個(gè)人筆記可以隨時(shí)隨地訪問,而不想我的工作筆記同步到我私人的 GitLab 和計(jì)算機(jī)中。在 vimwiki 這樣配置要比我試過的其他軟件都要簡單。
這個(gè)配置告訴 vimwiki 有兩個(gè)不同 Wiki,都使用 markdown 語法(再一次,因?yàn)槲业娜粘9ぷ髦刑焯於荚谟?markdown 語法)。我也告訴 Vimwiki 在哪個(gè)文件夾存儲(chǔ) wiki 頁面。
如果你進(jìn)入存儲(chǔ) wiki 頁面的文件夾,你會(huì)找到你的 wiki 的普通的 markdown 頁面文件,而沒有其他特殊的 Vimwiki 相關(guān)內(nèi)容,這使得很容易的初始化 Git 倉庫和同步你的 wiki 到中心倉庫。
這一步檢出一個(gè) GitLab 項(xiàng)目到本地的 VimWiki 文件夾,這步操作和你操作任何 github 的倉庫相同,只不過因?yàn)槲腋矚g保存我的筆記到我的私人 GitLab 倉庫,所以我運(yùn)行了一個(gè) GitLab 實(shí)例用于我個(gè)人的項(xiàng)目。
GitLab 的 wiki 功能可以用來為你的項(xiàng)目創(chuàng)建 wiki 頁面。這些 wiki 就是 Git 倉庫本身。它們使用 markdown 語法,你懂得。
只需要初始化你需要的 wiki ,讓它與你為筆記而創(chuàng)建的項(xiàng)目的 wiki 同步即可。
cd ~/vimwiki_personal_md/ git init git remote add origin git@your.gitlab.com:your_user/vimwiki_personal_md.wiki git add . git commit -m "Initial commit" git push -u origin master
在 GitLab 創(chuàng)建一個(gè)新的項(xiàng)目后,你就可以從頁面上復(fù)制這些步驟的代碼。唯一的改變是倉庫地址結(jié)尾是 .wiki(而不是 .git)。 這會(huì)告訴 Git 克隆 wiki 倉庫而不是項(xiàng)目本身。
就是這樣!現(xiàn)在你能夠通過 Git 來管理你的筆記,通過 GitLab wiki 用戶界面來修改筆記。
你可能(像我一樣)不想手動(dòng)的為每個(gè)添加到筆記本的筆記創(chuàng)建一個(gè)提交。為了解決這個(gè)問題,我使用了 Vim 插件 chazy/dirsetting。我添加一個(gè) .vimaddr 文件,已經(jīng)下面的內(nèi)容:
: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&
每當(dāng)我打開 Wiki 文件按下 :w 發(fā)布我的修改時(shí),它就會(huì)更新到最新的版本。這樣做會(huì)使你的本地文件與中心倉庫保持同步。如果你有合并沖突,通常你需要解決它們。
目前,這就是以我的知識(shí)來互動(dòng)的方法,我很喜歡這方法;請告訴我你對于這個(gè)方法的想法,可以在評(píng)論區(qū)分享你如何追蹤筆記的方法。