vim优秀插件推荐vimwiki

项目主页

在这里插入图片描述

https://github.com/vimwiki/vimwiki

安装和使用说明,官方写的很细:https://github.com/vimwiki/vimwiki/blob/master/README-cn.md

安装方法

通过 Vim-Plug 安装
在 vimrc 中加入以下插件设置:

Plug 'vimwiki/vimwiki'

然后运行 :PlugInstall

更改 Wiki 语法

默认的语法使用的是VimWiki,使用下来体验还行。但是我以前写的几百篇笔记都是使用Markdown的,github,csdn都是Markdown语法的。所以对于我来说必须Markdown,否则无法使用了。

VimWiki 目前附带 3 种语法:VimWiki(默认)、Markdown(降价)和 MediaWiki(媒体)。

注意:只有默认语法带有内置的 HTML 转换器。对于 Markdown 或 MediaWiki,请参阅:h vimwiki-option-custom_wiki2html。此处提供了一些示例和第 3 方工具。

如果您更喜欢使用 Markdown 或 MediaWiki 语法,请在您的 中设置以下选项.vimrc:

let g:vimwiki_list = [{'path': '~/vimwiki/',
                      \ 'syntax': 'markdown', 'ext': '.md'}]

使用markdown语法,就无法使用HTML转换器了,这样有点难受,毕竟转成html可以方便的分享或者做个人博客使用。

官方提供了一些解决方案:
https://vimwiki.github.io/vimwikiwiki/Related%20Tools.html#Related%20Tools-External%20Tools

patrickdavey/vimwiki_markdown

评价:能用,但不完美~
实测效果一般,markdown一些语法的支持不是太好,比如表格的样式,无法达到我想要的效果,非最终方案,可跳过此节
我选择的是这个项目:

https://github.com/patrickdavey/vimwiki_markdown

gem install vimwiki_markdown

安装完成以后,修改.vimrc就可以类似如下内容即可:

let g:vimwiki_list = [{'path': '~/vimwiki', 'template_path': '~/vimwiki/templates/',
          \ 'template_default': 'default', 'syntax': 'markdown', 'ext': '.md',
          \ 'path_html': '~/vimwiki/site_html/', 'custom_wiki2html': 'vimwiki_markdown',
          \ 'html_filename_parameterization': 1,
          \ 'template_ext': '.tpl'}]

最重要的部分是’custom_wiki2html’: ‘vimwiki_markdown’和’html_filename_parameterization’: 1。custom_wiki2html 告诉 vimwiki 使用这个 gem 来创建 html, html_filename_parameterization 告诉 vimwiki 匹配 vimwiki_markdown 产生的文件名。

下载
https://raw.githubusercontent.com/patrickdavey/vimwiki_markdown/master/example_files/default.tpl
保存路径如下:

~/vimwiki/templates/default.tpl

命令
:Vimwiki2HTML – 将当前 wiki 文件转换成 HTML 网页
:VimwikiAll2HTML – 把所有 wiki 文件转换成 HTML 网页
:help vimwiki-commands – 显示全部命令

实测效果一般,无法达到我想要的效果

WnP/vimwiki_markdown

评价:能用,但不完美~
我了能达到我的效果,还又测试了下面的插件。
https://github.com/WnP/vimwiki_markdown
实际测试结果与patrickdavey/vimwiki_markdown几乎相同,样式一般。不完美。
因为没达到我的目的就不记录这个插件安装的过程了。有兴趣根据项目主页自行安装即可。

wiki2html.sh

评价:能用,效果比上面两个插件强,我的最终方案,但是比起iamcco/markdown-preview.nvim这样的markdown预览插件的效果,还是差很多。

项目主页

1.安装pandoc

安装方法参考:https://pandoc.org/installing.html#linux

在下载页面https://github.com/jgm/pandoc/releases
根据自己cpu类型下载,
我下载的是:pandoc-2.14.0.2-linux-amd64.tar.gz
解压直接就可以使用了,把这个程序放进path环境变量里即可。
比如:

export PATH=$PATH:/home/itkey/.soft/pandoc-2.14.0.2/bin

2.配置vimwiki

2.1创建目录

~/Sync目录结构如下:

.
├── wiki
│   └── template
│       └── markdown.html
├── wiki2html.sh
└── wiki_html

创建目录命令:

mkdir -p ~/Sync/wiki/template
2.1创建markdown.html

命令如下:

vim ~/Sync/wiki/template/markdown.html

文件内容如下:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>$title$---$root_path$</title>
<link rel="stylesheet" href="$root_path$$css$">
<meta http-equiv="Content-Type" content="text/html">
  <style>
    code{white-space: pre-wrap;}
    span.smallcaps{font-variant: small-caps;}
    span.underline{text-decoration: underline;}
    div.column{display: inline-block; vertical-align: top; width: 50%;}
    div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
    ul.task-list{list-style: none;}
    pre > code.sourceCode { white-space: pre; position: relative; }
    pre > code.sourceCode > span { display: inline-block; line-height: 1.25; }
    pre > code.sourceCode > span:empty { height: 1.2em; }
    .sourceCode { overflow: visible; }
    code.sourceCode > span { color: inherit; text-decoration: inherit; }
    div.sourceCode { margin: 1em 0; }
    pre.sourceCode { margin: 0; }
    @media screen {
    div.sourceCode { overflow: auto; }
    }
    @media print {
    pre > code.sourceCode { white-space: pre-wrap; }
    pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; }
    }
    pre.numberSource code
      { counter-reset: source-line 0; }
    pre.numberSource code > span
      { position: relative; left: -4em; counter-increment: source-line; }
    pre.numberSource code > span > a:first-child::before
      { content: counter(source-line);
        position: relative; left: -1em; text-align: right; vertical-align: baseline;
        border: none; display: inline-block;
        -webkit-touch-callout: none; -webkit-user-select: none;
        -khtml-user-select: none; -moz-user-select: none;
        -ms-user-select: none; user-select: none;
        padding: 0 4px; width: 4em;
        color: #aaaaaa;
      }
    pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa;  padding-left: 4px; }
    div.sourceCode
      {   }
    @media screen {
    pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }
    }
    code span.al { color: #ff0000; font-weight: bold; } /* Alert */
    code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
    code span.at { color: #7d9029; } /* Attribute */
    code span.bn { color: #40a070; } /* BaseN */
    code span.bu { } /* BuiltIn */
    code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
    code span.ch { color: #4070a0; } /* Char */
    code span.cn { color: #880000; } /* Constant */
    code span.co { color: #60a0b0; font-style: italic; } /* Comment */
    code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
    code span.do { color: #ba2121; font-style: italic; } /* Documentation */
    code span.dt { color: #902000; } /* DataType */
    code span.dv { color: #40a070; } /* DecVal */
    code span.er { color: #ff0000; font-weight: bold; } /* Error */
    code span.ex { } /* Extension */
    code span.fl { color: #40a070; } /* Float */
    code span.fu { color: #06287e; } /* Function */
    code span.im { } /* Import */
    code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
    code span.kw { color: #007020; font-weight: bold; } /* Keyword */
    code span.op { color: #666666; } /* Operator */
    code span.ot { color: #007020; } /* Other */
    code span.pp { color: #bc7a00; } /* Preprocessor */
    code span.sc { color: #4070a0; } /* SpecialChar */
    code span.ss { color: #bb6688; } /* SpecialString */
    code span.st { color: #4070a0; } /* String */
    code span.va { color: #19177c; } /* Variable */
    code span.vs { color: #4070a0; } /* VerbatimString */
    code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
    .display.math{display: block; text-align: center; margin: 0.5rem auto;}


	code {
	/*去掉代码的边框*/
	border: 0px solid #ccc; 
	background-color: #f5f5f5; 
	}
  </style>
 
</head>
<body>
<div>
    <a href="$root_path$index.html">首页</a> > $title$
    </div>
<hr />
$body$
<hr />
<div>
    <a href="$root_path$index.html">首页</a> > $title$
      </ol>
    </div>
	</div>
</body>
</html>
2.2 创建wiki2html.sh
vim ~/Sync/wiki2html.sh

内容如下:

# This is heavily based in the code here: 
# https://gist.github.com/enpassant/0496e3db19e32e110edca03647c36541
# Special thank you to the user enpassant for starting it https://github.com/enpassant

#!/bin/bash

SYNTAX="$2"
EXTENSION="$3"
OUTPUTDIR="$4"
INPUT="$5"

# Added ones
TEMPLATE_PATH="$7"
TEMPLATE_DEFAULT="$8"
TEMPLATE_EXT="$9"
ROOT_PATH="${10}"

[[ "$ROOT_PATH" = "-" ]] && ROOT_PATH=''


FILE=$(basename "$INPUT")
FILENAME=$(basename "$INPUT" ."$EXTENSION")
FILEPATH=${INPUT%$FILE}
OUTDIR=${OUTPUTDIR%$FILEPATH*}
OUTPUT="$OUTDIR"/$FILENAME
CSSFILENAME=$(basename "$6")
FULL_TEMPLATE="$TEMPLATE_PATH/$TEMPLATE_DEFAULT$TEMPLATE_EXT"

HAS_MATH=$(grep -o "\$\$.\+\$\$" "$INPUT")
if [ -n "$HAS_MATH" ]; then
    MATH="--mathjax=https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"
else
    MATH=""
fi

# >&2 echo "MATH: $MATH"

sed -r 's/(\[.+\])\(([^)]+)\)/\1(\2.html)/g' <"$INPUT" | pandoc $MATH --template="$FULL_TEMPLATE" -f "$SYNTAX" -t html -c "$CSSFILENAME" -M root_path:"$ROOT_PATH" -M title:"$FILENAME" | sed -r 's/<li>(.*)\[ \]/<li class="todo done0">\1/g; s/<li>(.*)\[X\]/<li class="todo done4">\1/g' > /tmp/crap.html

# With this you can have ![pic of sharks](file:../sharks.jpg) in your markdown file and it removes "file" 
# and the unnecesary dot html that the previous command added to the image. 
sed 's/file://g' < /tmp/crap.html | sed 's/jpg.html/jpg/g' > "$OUTPUT.html"

设置可招行权限

chmod +x ~/Sync/wiki2html.sh
2.3配置.vimrc

let g:vimwiki_list = [{
  \ 'auto_export': 1,
  \ 'automatic_nested_syntaxes':1,
  \ 'path_html': '$HOME/Sync/wiki_html',
  \ 'path': '$HOME/Sync/wiki',
  \ 'template_path': '$HOME/Sync/wiki/template/',
  \ 'syntax': 'markdown',
  \ 'ext':'.md',
  \ 'template_default':'markdown',
  \ 'custom_wiki2html': '$HOME/Sync/wiki2html.sh',
  \ 'template_ext':'.html'
\}]

au BufRead,BufNewFile *.md set filetype=vimwiki

let g:taskwiki_sort_orders={"C": "pri-"}
let g:taskwiki_syntax = 'markdown'
let g:taskwiki_markdown_syntax='markdown'
let g:taskwiki_markup_syntax='markdown'

配置完成,虽然还不能说是完美的,经过我不断在折腾,总算可以跟CSDN比较接近了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值