使用 vi 管理笔记维基的想法可能看起来非常规,但是当你在日常工作中使用 vi 时,这非常有意义。
作为一名软件开发人员,用我用来编写代码的同一个工具来写笔记会更容易。我希望我的笔记只需一个编辑器命令即可访问,无论我在哪里都可以使用,并以与我处理代码相同的方式进行管理。这就是为什么我为我的个人知识库创建了一个基于 vi 的设置。简而言之:我使用 vi 插件 Vimwiki 在我的笔记本电脑本地管理我的维基,我使用 Git 对其进行版本控制(并保留一个中央的、更新的版本),并且我使用 GitLab 进行在线编辑(例如,在我的移动设备上)。
为什么使用维基进行笔记是有意义的
我尝试过许多不同的工具来跟踪笔记、写下转瞬即逝的想法以及组织我不应该忘记的任务。这些工具包括离线笔记本(是的,包括纸质笔记本)、特殊的笔记软件和思维导图软件。
所有这些解决方案都有优点,但没有一个能满足我的所有需求。例如,思维导图 是可视化你脑海中想法的好方法(因此得名),但我尝试过的工具提供的搜索功能很差。(纸质笔记也是如此。)此外,思维导图在一段时间后通常很难阅读,因此它们不太适合长期笔记。
有一天,在为一个协作项目设置 DokuWiki 时,我发现维基结构最符合我的要求。使用维基,你可以创建笔记(就像你在任何文本编辑器中所做的那样)并在你的笔记之间创建链接。如果链接指向一个不存在的页面(可能是因为你希望某条信息在它自己的页面上,但尚未设置它),维基将为你创建该页面。这些功能使维基非常适合快速写下你脑海中浮现的想法,同时仍然将你的笔记保持在易于浏览和搜索关键字的页面结构中。
虽然这听起来很有希望,并且设置 DokuWiki 并不困难,但我发现仅仅为了跟踪我的笔记而设置一个完整的维基有点太麻烦了。经过一些研究,我找到了 Vimwiki,一个可以满足我需求的 Vi 插件。由于我每天都使用 Vi,所以记笔记非常类似于编辑代码。此外,在 Vimwiki 中创建页面甚至比 DokuWiki 更容易——你所要做的就是当你的光标悬停在一个单词上时按下 Enter 键。如果尚没有同名的页面,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 有两个不同的维基,并且我希望在两者中使用 Markdown 语法(再说一遍,因为我习惯于日常工作中的 Markdown)。它还告诉 Vimwiki 存储维基页面的文件夹。
如果你导航到存储维基页面的文件夹,你将找到你的维基的平面 Markdown 页面,没有任何特殊的 Vimwiki 上下文。这使得初始化 Git 仓库并将你的维基同步到中央仓库变得容易。
将你的维基同步到 GitLab
将 GitLab 项目检出到你的本地 Vimwiki 文件夹的步骤与你用于任何 GitHub 仓库的步骤几乎相同。我只是更喜欢将我的笔记保存在私有 GitLab 仓库中,所以我保持一个 GitLab 实例运行用于我的个人项目。
GitLab 具有维基功能,允许你为你的项目创建维基页面。这些维基本身就是 Git 仓库。并且它们使用 Markdown 语法。你明白这是什么意思了。
只需初始化你要与为你笔记创建的项目的维基同步的维基
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 上创建一个新项目后登陆的页面复制。唯一需要更改的是仓库 URL 末尾的 .wiki
(而不是 .git
),它告诉它克隆维基仓库而不是项目本身。
就是这样!现在你可以使用 Git 管理你的笔记,并在 GitLab 的维基用户界面中编辑它们。
但也许(像我一样)你不希望为你添加到笔记本的每个笔记手动创建提交。为了解决这个问题,我使用了 Vim 插件 chazy/dirsettings。我添加了一个包含以下内容的 .vimdir
文件到 ~/vimwiki_personal_md
: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&
这会在我每次打开维基文件时拉取我的维基的最新版本,并在每次 :w
命令后发布我的更改。这样做应该使你的本地副本与中央仓库保持同步。如果你有合并冲突,你可能需要解决它们(像往常一样)。
目前,这就是我与我的知识库互动的方式,我对它非常满意。请告诉我你对这种方法的看法。并请在评论中分享你最喜欢的笔记方式。
3 条评论