使用 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。我在 ~/vimwiki_personal_md
中添加了一个包含以下内容的 .vimdir
文件
: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 条评论