Pelicanの記事をVimで楽々編集する

スポンサード リンク

Pelican のブログ記事はreStructedTextで書くものだが,下記のようなメタ情報を書き込むのが面倒。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
Pelicanの記事をVimで楽々編集する
##########################################

:date: 2015-01-22 16:51:58
:modified: 2015-01-22 17:09:33
:category: blog
:tags: Pelican, Vim
:slug: pelican-vim
:authors: M\. Tsuyuki
:summary: VimでPelicanのテンプレートと,更新日時を自動入力する方法を説明する

こんなものは人間の仕事ではない。機械にやらせることにする。

PelicanなんだからもちろんPythonでと言いたいところだが,シェルスクリプト。

引数としてファイル名(ham.rstとか,egg.md)を読んで,reSTやMarkdownに応じた書式でメタ情報を生成するmkskel.shを作った。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/bin/bash

if test "${1##*.}" = "md"; then
    echo Title:
    echo Date: `date +'%F %T'`
    echo Modified: `date +'%F %T'`
    echo Category: blog
    echo Tags: 未分類
    echo Slug: ${1%.*}
    echo Authors: M. Tsuyuki
    echo Summary:
elif test "${1##*.}" = "rst" ; then
    echo title
    echo "##########################################"
    echo
    echo :date: `date +'%F %T'`
    echo :modified: 2015-01-22 17:09:33
    echo :category: blog
    echo :tags: 未分類
    echo :slug: ${1%.*}
    echo :authors: M\\. Tsuyuki
    echo :summary:
fi

そして,.vimrcで*.rstや*.mdを作成時にmkskel.shを呼び出すようにautocmdを設定する。以下では,pelicanのブログを作成しているディレクトリでのみテンプレートを読み込むようにしている。

1
2
3
" スケルトンを作成する
autocmd BufNewFile $HOME/git_projects/pelican-blog/content/*.md 0r! sh "$HOME/git_projects/pelican-blog/mkskel.sh"  %
autocmd BufNewFile $HOME/git_projects/pelican-blog/content/*.rst 0r! sh "$HOME/git_projects/pelican-blog/mkskel.sh" %

最後に,ファイル保存時に更新日時を更新するため,.vimrcにautocmdを設定する。

1
2
3
" 保存時に更新日時を書き換える
autocmd BufWrite $HOME/git_projects/pelican-blog/content/*.md exe "%s/^Modified:.*/Modified: ".strftime("%F %T")."/ | normal ``"
autocmd BufWrite $HOME/git_projects/pelican-blog/content/*.rst exe "%s/^:modified:.*/:modified: ".strftime("%F %T")."/ | normal ``"

これで人間様はタグ,カテゴリだけ気すれば良いようになった。ラクチン。

Comments !

social