原文请猛戳:http://galoisplusplus.coding.me/blog/2013/09/19/have-fun-with-vim-wiki/php
写blog确实是一种消化和深刻理解知识的方式,但每每要整理一个完整的主题至关的耗时间。
平时我也想记一记一些有用然而散乱的tips,慢慢积累起来。
做为一位Vim忠实粉,我理所固然找到了大名鼎鼎的Vim插件Vimwiki,
并开始借此搭建个人我的wiki。css
用pathogen这个管理Vim插件的插件把Vimwiki安装上后,须要在.vimrc中加入一些设置,其中最重要的是指定你所写的wiki源文件的路径和要发布的html文件的路径:html
let g:vimwiki_list = [{'path': '~/my_site/', 'path_html': '~/public_html/'}]
接下来就能够在你所指定的'path'下建立.wiki文件,编辑完后是用如下Vim命令html5
:Vimwiki2HTML
Vimwiki插件就会自动将该.wiki文件转化为同名的html页面(例如topic.wiki生成的是topic.html)并把html放到你所指定的'path_html'下。
若是要转化全部条目能够用如下的Vim命令:linux
:VimwikiAll2HTML
<!-- more -->git
有了html页面,天然想发布到某网站上。我选择了提供pages服务的业界良心Github,建立一个名为wiki的新repo(https://github.com/yszheda/wiki),把'path_html'上的html文件托管到上面,并经过gh-pages分支发布个人Project pages(http://yszheda.github.io/wiki/)。
页面的样式我偷懒直接使用了Github官方提供的Architect主题,为了让该主题应用到全部Vimwiki生成的html页面上,须要修改Vimwiki插件目录下的autoload/vimwiki/default.tpl
模板文件:github
<!DOCTYPE html> <html> <head> <meta charset='utf-8'> <!-- <link rel="Stylesheet" type="text/css" href="%root_path%%css%"> --> <link href='https://fonts.googleapis.com/css?family=Architects+Daughter' rel='stylesheet' type='text/css'> <link rel="stylesheet" type="text/css" href="stylesheets/stylesheet.css" media="screen" /> <link rel="stylesheet" type="text/css" href="stylesheets/pygment_trac.css" media="screen" /> <link rel="stylesheet" type="text/css" href="stylesheets/print.css" media="print" /> <!--[if lt IE 9]> <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> <title>%title%</title> <meta http-equiv="Content-Type" content="text/html; charset=%encoding%"> </head> <body> <header> <div class="inner"> <h1>Wiki</h1> <h2>by yszheda</h2> <a href="https://github.com/yszheda/wiki" class="button"><small>View project on</small>GitHub</a> </div> </header> <div id="content-wrapper"> <div class="inner clearfix"> <section id="main-content"> %content% </section> <aside id="sidebar"> <p>Wiki maintained by <a href="https://github.com/yszheda">yszheda</a></p> <p>This page was generated by <a href="pages.github.com">GitHub Pages</a> using the Architect theme by <a href="https://twitter.com/jasonlong">Jason Long</a>.</p> </aside> </div> </div> </body> </html>
接下来要折腾的就是自动发布Vimwiki生成的html页面了。
我写了一个简单的auto-deploy.sh脚本:vim
#!/bin/bash path_html= # set your vimwiki html path cd $path_html git checkout gh-pages git add *.html git commit -m"syn at `date`" git push origin gh-pages
再把它设置为定时做业,能够用经典的crontab
,例如crontab -e
后加入:api
* 20 * * * /<path>/auto-deploy.sh
设置每日晚上八点自动发布。bash
不过做为一名Arch user,很早之间就当小白鼠从sysvinit迁移到了systemd,天然要试试这个高大上的systemd
。
systemd也支持定时做业,以个人例子来说,我但愿每日定时发布,能够从建立通常的daily event开始。
编辑/etc/systemd/system/timer-daily.timer
文件:
[Unit] Description=Daily Timer [Timer] OnBootSec=10min OnUnitActiveSec=1d Unit=timer-daily.target [Install] WantedBy=basic.target
编辑/etc/systemd/system/timer-daily.target
文件:
[Unit] Description=Daily Timer Target StopWhenUnneeded=yes
建立如下目录,做为接下来要被执行的具体的定时做业的服务设置文件的路径:
mkdir /etc/systemd/system/timer-daily.target.wants
在该目录下添加具体要被执行的定时做业的服务设置文件/etc/systemd/system/timer-daily.target.wants/syn-vimwiki.service
:
[Unit] Description=syn vimwiki [Service] Nice=19 IOSchedulingClass=2 IOSchedulingPriority=7 ExecStart= /<path>/auto-deploy.sh
最后执行
systemctl enable timer-daily.timer && systemctl start timer-daily.timer
便可。
设置按小时或按星期定时发布也是能够的,
万能的Arch wiki上都有详细的说明。
===我是分隔线===
后来我又改主意了,想频繁更新,同时也不想像wiki那样搞得那么麻烦。因而我把syn-wiki单独出来,syn-vimwiki.service文件移到它的父目录(/etc/systemd/system/),同时给它设个独立的timer。如下是/etc/systemd/system/syn-vimwiki.timer文件的内容:
[Timer] OnUnitActiveSec=10s OnBootSec=10s [Install] WantedBy=basic.target
最后执行
systemctl enable syn-vimwiki.timer && systemctl start syn-vimwiki.timer systemctl restart syn-vimwiki.service
===我是分隔线===
关于systemd再多啰嗦几句,迁移到systemd后天然仍是能够用原来的cron
服务的,若是某一天你打了鸡血,忽然变激进了,想把cron撤掉换成纯systemd(Arch发行版就常常干这种事XD),在执行
systemctl stop cronie && systemctl disable cronie
以前,别忘了加入logrotate
、man-db-update
、mlocate-update
、verify-shadow
这些服务的配置文件。
至于具体的内容,万能的Arch wiki也早为不折腾不死的你准备好了XD