autodate.vim は普通ではLast Change:
と.
の間に日付を入れるが、
Jekyll用にFront-matterに入れてテンプレから呼び出して使いたい。
参考
ファイルタイプごとにタイムスタンプの形式を変える
- Windowsの場合
$HOME/vimfiles/ftplugin
- Mac OSXの場合
$HOME/.vim/ftplugin
というディレクトリを作って、 そのディレクトリ内にそれぞれのファイルタイプ用の設定ファイルを用意すれば良い。
例えば、
- htmlのファイルタイプの場合は、 html.vim
- javaのファイルタイプの場合は、 java.vim
を用意して、その中にそれぞれのファイルタイプ用の設定を書きます。 すると、ファイルを開いた時にそれぞれのファイルタイプ用の設定が読み込まれます。
b:
をつけて、バッファローカルな設定にすると更に良いです。:let b:autodate_keyword_pre = 'Date:'
ftplugin ディレクトリにファイルタイプ毎の設定ファイルを記述すればいいようだ。
から定石だと~/.config/nvim/ftplugin
になるが、せっかく dein.vim でパッケージ管理しているので、
autodate.vim 用に ftplugin を分離したい。
よし。githubでforkして ftplugin を加えたものを作ろうという考えに至った。
git clone
するもっとも、プラグイン自体のライセンスがよくわからない。 従って苦情がきたらこの方法は使えない。
まずはgithub上でautodate.vimをforkする。
適当なディレクトリで
git clone https://github.com/yourgithub/autodate.vim
し、中に ftplugin を作って編集する。
まず.md
ファイルがどんなファイルタイプとして読み込まれているか確認する。
じつは &filetype だけだった
恥ずかしい話、取得できそうなのにできないな…と思っていたら、
&filetype
とするだけだった。
例えば、hoge.py を開いているときに
:echo &filetype
とすれば
python
と出力される。
.md
ファイルを開いている状態で:echo &filetype
をしてみると
markdown
と表示された。
なのでautodate.vim/ftplugin/markdown.vim
に変更内容を記述する。
date
A date here overrides the date from the name of the post. This can be used to ensure correct sorting of posts. A date is specified in the format YYYY-MM-DD HH:MM:SS +/-TTTT
; hours, minutes, seconds, and timezone offset are optional.
「autodate_format」で、autodate.vimスクリプトで挿入されるタイムスタンプのフォーマットを 指定することができます。
設定 デフォルト値 設定例 autodate_format %d-%3m-%Y :let autodate_format=” %Y/%m/%d %H:%M:%S “ タイムスタンプのフォーマットの指定例を一通り、下に書いておきます。
タイムスタンプのフォーマット 出力例 %Y/%m/%d 2004/09/27 %H:%M:%S 13:06:32 %y%m%d-%H%M 040927-1308 %d-%3m-%Y 27-Sep-2004 %Y/%m/%d %H:%M:%S 2004/09/27 13:06:32 %c Sun Apr 27 11:49:23 1997 %Y %b %d %X 1997 Apr 27 11:53:25 %y%m%d %T 970427 11:53:55
Jekyllのdate
にフォーマット合わせるべきかなと思うので、
let b:autodate_format = "%Y-%m-%d %H:%M:%S"
としましょう。
ハッシュ形式
ハッシュはキー
:[半角スペース]値
の形式で表します。コロンのあとに必ず半角スペースを 1 つ以上入れてください。
最初詰めて記述したらFront Matter部分でJekyllがエラーを吐いた。YAMLはスペースでハッシュと値に分けている。 なのでprepend文字列にスペースを入れるようにした。
let b:autodate_keyword_pre ='lastchange : '
autodate.vim/ftplugin/markdown.vim
はこうなった。
let b:autodate_keyword_pre ='lastchange : '
let b:autodate_keyword_post ='.'
let b:autodate_format = "%Y-%m-%d %H:%M:%S"
変更した autodate.vim をgithubにpushする。
git add .
git commit
git push
dein.vim のtomlを変更する
[[plugins]]
repo = 'yourgithub/autodate.vim'
カスタマイズしたプラグインを読み込む。
call dein#install()
インストール後、プラグインの内容を変更した場合は改めてgithubへpushし、
call dein#update()
を行う。
Front-matterにListとHash構造を定義する
まず、Front-matter及びbody部をこのように定義してみます。
--- title: template1 layout: default hash1: name: Hash構造 value: 値が入る list2: - 一番目 - 二番目 --- {{ page.hash1.name }}<br /> {{ page.hash1.value }}<br /> <br /> {% for data in page.list2 }} {{ data }}<br /> {% for data in page.list2 }} {{ data }}<br /> {% endfor %}
結果はこうなります。
Hash構造 値が入る 一番目 二番目
ポイントは、記述した定義は全て”page”というhashに格納されるということです。
Front Matterで
lastchange : .
と書いておくと自動的に最終変更日がセーブ毎に挿入される。
挿入された変更日は
{{ page.lastchange }}
でページに挿入される。
実際にやってみるとこうなる。
2017-06-17 02:13:24 +0000