原文請猛戳: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