前两天刚写了篇自己的实践过程,目的是在 vim中搭建一个方便写 LaTeX文档的环境,现在又来搞一个vimwiki, 这是为啥呢

首先

LaTeX确实很强大,但同时也是更专注于数学相关的排版;如果我用来在边听些网课边做笔记,这想必是极好的,因为课程本身是系统的,连续的,最后出来的笔记也比较完整。

但同时

我感觉我还需要搭建一个自己的知识库,然后我就看到了 VimWiki,能够用类似wiki一样的方式组织自己各种或碎片化或完整的知识库,确实听起来很不错。看了一下,使用起来也非常简单。

安装

无脑使用vim-plug,在 \_vimrc中加入

call plug#begin()
... 
Plug 'vimwiki/vimwiki'
call plug#end()

基本使用

  1. 在任意缓冲区的普通模式下输入 <leader>ww 即可跳转到你的wiki的首页。
  2. 在任意单词上按回车,就会创建相应词条,单词也会被 '[[ ]]'包围。

    • 你也可以按 v进入视图模式选择完整词条名称,再按回车,避免空格等打断词条。
  3. 再按一下回车,会自动跳转到该词条对应的.wiki文件;如果没有该文件,会自动创建。
  4. 基本格式(从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
  5. 一些常用键映射

    • <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链接
  6. 配置项
    在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,当中提到要给浏览器加点东西。

  1. 安装 node.js。这个我在之前为了用 coc,已经装上了vim折腾笔记
  2. 安装 mathjax.

    1. 进入命令行,找个合适的地方, 这里我用的是我的 vimwiki目录
    2. 输入 npm install mathjax 详情可以看 mathjax。然后你就能看到 npm在你指定的目录下创建了一个 somewhere\vimwiki\node_modules\mathjax 目录。
    3. 在你的 .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文件都可以自动添加。

        1. 在你的模板目录下新建一个模板(或者编辑已有的默认模板),如:
        <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>替换成你自己的路径

        1. 然后修改默认模块名为这个模版(参考上面的 _vimrc配置),或者在你的 .wiki文件开头用 %template <template name> 指定想要用的模板
        2. 将 .wiki文件再次导出为 .html,再扔到浏览器中看看效果,应该就没问题了。

捕虫中年
1 声望2 粉丝

[巴达蝶] 使用了 [沉睡粉]


引用和评论

0 条评论