前两天刚写了篇自己的实践过程,目的是在 vim中搭建一个方便写 LaTeX文档的环境,现在又来搞一个vimwiki, 这是为啥呢
首先
LaTeX确实很强大,但同时也是更专注于数学相关的排版;如果我用来在边听些网课边做笔记,这想必是极好的,因为课程本身是系统的,连续的,最后出来的笔记也比较完整。
但同时
我感觉我还需要搭建一个自己的知识库,然后我就看到了 VimWiki,能够用类似wiki一样的方式组织自己各种或碎片化或完整的知识库,确实听起来很不错。看了一下,使用起来也非常简单。
安装
无脑使用vim-plug,在 \_vimrc中加入
call plug#begin()
...
Plug 'vimwiki/vimwiki'
call plug#end()
基本使用
- 在任意缓冲区的普通模式下输入
<leader>ww
即可跳转到你的wiki的首页。 在任意单词上按回车,就会创建相应词条,单词也会被 '[[ ]]'包围。
- 你也可以按
v
进入视图模式选择完整词条名称,再按回车,避免空格等打断词条。
- 你也可以按
- 再按一下回车,会自动跳转到该词条对应的.wiki文件;如果没有该文件,会自动创建。
基本格式(从github上复制粘贴的)
基本符号= Header1 = == Header2 == === Header3 === *bold* -- bold text _italic_ -- italic text [[wiki link]] -- wiki link [[wiki link|description]] -- wiki link with description
列表
* bullet list item 1 - bullet list item 2 - bullet list item 3 * bullet list item 4 * bullet list item 5 * bullet list item 6 * bullet list item 7 - bullet list item 8 - bullet list item 9 1. numbered list item 1 2. numbered list item 2 a) numbered list item 3 b) numbered list item 4
一些常用键映射
- <Leader>ww -- 打开默认 Wiki页
- <Leader>wt -- 在新的 tab页中打开默认 Wiki页
- <Leader>ws -- 选择并打开 Wiki页
- <Leader>wd -- 删除当前 Wiki页
- <Leader>wr -- 重命名当前 Wiki页
- <Enter> -- 跟踪/创建 Wiki页
- <Shift-Enter> -- 分割窗口并跟踪/创建 Wiki页
- <Ctrl-Enter> -- 垂直分割窗口并跟踪/创建 Wiki页
- <Backspace> -- 回到父(之前的) Wiki页
- <Tab> -- 跳转到下一个 Wiki链接
- <Shift-Tab> -- 跳转到上一个 Wiki链接
配置项
在vim普通模式下输入:VimWikiVar
可以看到当前 vimwiki的设置。
我目前在_vimrc
中手动修改的配置如下let g:vimwiki_list =[{ \ 'template_default': 'def_template', \ 'template_path': '$HOME/vimwiki/templates', \ 'template_ext': '.html'}]
其中主要是默认使用的模板的名称,和模板所在的目录,在下文中会用到。
绕不开的数学公式
自己的知识库里最后还是绕不开要输入数学符号,还好这些都是支持的,可以在vim的普通模式下输入 :help vimwiki-syntax-math
查看相关说明。
简而言之,
- 在行内插入数学符号,用`$$`包住;
- 在新行插入,用
```
{{$
...
}}$
```
包住。
- 其它的基本上别的和 LaTeX差不多。
导出成.html文件
与 .tex文件类似,.wiki文件中的数学符号还要经过处理才能显示。我是直接导出成.html文件,然后在浏览器中直接打开看效果的。在.wiki文件缓冲区普通模式下输入 :VimWiki2HTML
, 会在 vimwiki_html
目录下找到导入的 .html文件。但是如果直接打开,你会发现显示的还是你的文本输入。再看看上面说的 vimwiki-syntax-math
,当中提到要给浏览器加点东西。
- 安装 node.js。这个我在之前为了用 coc,已经装上了vim折腾笔记
安装 mathjax.
- 进入命令行,找个合适的地方, 这里我用的是我的 vimwiki目录
- 输入
npm install mathjax
详情可以看 mathjax。然后你就能看到 npm在你指定的目录下创建了一个somewhere\vimwiki\node_modules\mathjax
目录。 在你的 .html文档上加上 mathjax的引用
- 手动在 .html文档中加上
<script type="text/javascript" src="<mathjax_folder>/es5/tex-chtml.js?config=TeX-AMS-MML_HTMLorMML"></script>
,其中<mathjax_folder>
就是刚才安装 mathjax的目录 你也可以修改 .html的模板,这样每次生成 .html文件都可以自动添加。
- 在你的模板目录下新建一个模板(或者编辑已有的默认模板),如:
<html> <script type="text/javascript" src="<mathjax_folder>/es5/tex-chtml.js?config=TeX-AMS-MML_HTMLorMML"></script> <head> <link rel="Stylesheet" type="text/css" href="%root_path%style.css" /> <title>%title%</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> <div class="content"> %content% </div> <p><small>Page created on %date%</small></p> </body> </html>
记得将
<mathjax_folder>
替换成你自己的路径- 然后修改默认模块名为这个模版(参考上面的 _vimrc配置),或者在你的 .wiki文件开头用
%template <template name>
指定想要用的模板 - 将 .wiki文件再次导出为 .html,再扔到浏览器中看看效果,应该就没问题了。
- 手动在 .html文档中加上
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。