| @技術/プログラミング

memolist.vim のデフォルトのテンプレートが挿入する YAML Frontmatter なんか変わってて、 Jekyll のと違った。 Markdown のプレビューは Marked 2 で見るようにしてるんだけど、 Marked 2 は memolist の特殊 YAML Frontmatter を正しく処理してくれない。 YAML Frontmatter はメタ情報なのでプレビュー時には表示して欲しくない( Marked 2 には YAML Frontmatter を表示しないオプションがある)んだけど必ず表示されてしまう。具体的にはこうなる。

調べてみたら memolist には標準のテンプレート以外に自分の好きなテンプレートを設定できる機能あったので、 ~/.vim/template/memolist/markdown.txt というファイル置いて以下のようにしておいた。なお memolist はテンプレート用ディレクトリに置いてある 拡張子.txt というファイルをテンプレートして利用するようだった。なので Markdown 用のテンプレートは markdown.txt となる。

---
title: {{_title_}}
date: {{_date_}}
tags: [{{_tags_}}]
categories: [{{_categories_}}]
---

テンプレートを変更した上で Marked 2 で YAML Frontmatter を Ignore するよう設定する。

すると以下のような表示になる。すっきりする。

すでに過去に書いた記事の YAML Frontmatter も Jekyll のやつに直す雑なスクリプト書いて直しておいた。

files = Dir.glob("#{ENV['HOME']}/Dropbox/memolist/*.markdown")
files.each_with_index do |file, index|
  filename = File.basename(file)
  filepath = File.expand_path(file)
  flag = true

  lines = File.readlines(file)
  lines[0..5].each_with_index do |line, i|
    case
    when line =~ /^title:(.+)/
      lines[i] = "---\n#{line}"
    when line == "==========\n"
      lines[i] = nil
    when line =~/^(?:date|tags|categories|tags):/
      # do nothing
    when line == "- - -\n"
      lines[i] = line.gsub(' ', '')
    else
      flag = false
      next
    end
  end

  if flag
    p filename
    File.write(filepath, lines.compact.join(""))
  end
end

| @技術/プログラミング

Vim で Emoji 補完したいと思ってプラグイン探したら見つかった。

GitHub のユーザー名とかリポジトリ名も補完してくれるっぽい。設定すれば Neocomplete と組み合わせて使える。

しかしこいつは自分の環境では単体では動かなかった。(補完用のデータの読み込みに失敗してるっぽい?)元になっている vim-emoji プラグインを入れたら動くようになった。

ユニコード絵文字表示できる環境では補完候補に Emoji が出てくる。

Terminal Vim

ユニコード絵文字を表示できない環境では日本語で Emoji の内容説明してくれる(要設定)。

Mac Vim

便利。

| @技術/プログラミング

US キーボードに使うようになってから、JIS キーボードでは単独で入力できるコロン(:)を打つときにシフトキー(Shift)押してないといけなくなった( Shift + の組み合わせでコロン : になる)。 .vimrc で : を入れ替える方法もあるらしいけど、なんとなく抵抗があってやってなかった。(Happy Hacking Keyboard Professional 2 を買った

それでよく起こるのが、ファイルを保存しようとしたときに Shit + を押してコマンドモードに入って w を押すと、 Shift が押されっぱなしの状態になっていて W となり保存できず警告メッセージが表示されてしまう現象や、終了しようとして Shift + ‘ => q したつもりが Shift + ‘ => Shift + q になっていて大文字の Q コマンドが実行されて Quickrun が実行されてしまう現象。プログラムを書いてるときにこういうのでつまずくとイラッとする。

:W:Q がそれぞれ小文字のコマンドと解釈されるようにすればいいわけなので、以下のように .vimrc に記述した。

" 大文字 W で保存
command W w
" Q で quickrun 実行しないように
command Q q

便利。

| @技術/プログラミング

Vimmabilityのなさ

TDD Boot Camp福岡で生まれて初めてペアプログラミングを経験した。自分のVimmabilityが思いの外低く焦った。書くの超とろいし、Rubyも全然分かってないしペア組んでもらった人に迷惑かけまくりな感じ。会社では誰もVimとか使ってなくてみんなEclipseとか秀丸使ってるし、周りにVimmerがいないので自分がどんなにしょぼいVim使いなのか気づいてなかった。

とりあえず今回、ペアを組んだ @mallowlabs さんに cw とか <数字>y とかを教えてもらった。あと

Vimでバックスペース使ったら負けだから

と言われてしまったのでバックスペースと矢印キーをなるべく使わずにプログラム書きたいと思います。でもTextMateとかCodaとか便利だからついつい使ってしまうんよね…。

プログラムが全然書けない

思ってたよりもプログラムができないことに気がついた。お題を与えられて、制限時間があるなかでコードを書いていかなければならない。しかもペアプログラミングなので一人でちんたら時間をかけて書くわけにもいかない。そしてやっぱ人に見られてると緊張する。Rubyの基本的なメソッドとかが分かってなくて教えてもらいながら書いてたけど、わからないと緊張してしまって頭が真っ白になって何も書けなくなる。いつもリファレンス本を片手にコードを書き捨てていたので、よくないなぁと思った。

というか、そもそも自分は仕事であまりコードを書いてないのだ。TDD Boot Campに来てる人たちはみんな公私ともにばりばりコードを書いててとても楽しそうだった。なんだかとても羨ましかった。

いろいろ考えないとなー、と思わせられた勉強会だった。

| @Mac/iPhone

ApplicationIcon.175x175-75.png (175×175)

MacVim で Markdown 形式で文章を書いて Marked.app でプレビューしてた。 Marked.app 、便利なんだけどリストのネストの解釈が GitHub とかの Markdown と違ってて、スペース 4 つ入れないといけないのがだるかった。あとコードのシンタックスハイライトも GitHub のに比べたら弱い。やはり GitHub Flavored Markdown で Markdown をプレビューしたい。

ここを読めばやり方が書いてある。

GitHub Flavored Markdown と互換にしたいなら結局 GitHub が使っていると公言している redcarpet と pygments.rb (と Python の Pygments )がいることになる。 Docter というその辺の gem をラップする Node.js 製のソフトを使えと書かれているけどいらないものは入れたくなかったので gem install pygments.rb redcarpet するだけにとどめた。

rbenv とか rvm でインストールした Ruby のバージョンで gem をインストールして使おうとすると失敗するらしいのであまり気が進まなかったけど sudo つけてシステムルビーにインストールした。

そんでもって同じ URL に書いてある Docter の Docter/bin/github-flavored-markdown.rb at master · alampros/Docter をパクってちょっと改変してから使うことにした。これをテキトーな名前で保存して chmod a+x する。

なんか HTMLwithPygments#header は引数三つ受け取れるようにしてないとエラーになるっぽい。あと style は Marked で当たるのでここで当てる必要なさそう。

Marked.app 側の設定で Custom Markdown Processor にチェックを入れてファイルのパスを指定すればオッケー。

Marked.app でも GitHub Flavored Markdown に近いかたちで Markdown のプレビューができるようになるのでドキュメント大量生成するしかないですね。

| @技術/プログラミング

最近 Emacs を触っていることもあってテキストエディター熱が高まっているので思いつきで社内で Vim 勉強会を開催した。

自分は最初はプラグインをいかに使いこなすかというところから Vim を使い始めて(Vim テクニックバイブル的 Vim の活用)、Emacs に手を出したことによる素の Vim の少ないキーストロークでの編集能力の高さ再発見(実践Vim的 Vim の活用)し、Vim の真骨頂は後者にあるのではないかとむさ苦しく語った。

準備不足で資料とか作れなかったのであまり意味わからない感じだったかも知れないけど、話をするために実践Vimを読んだり積ん読になっていたオライリーの Learning the vi and Vim Editors を読んだりして勉強のきっかけを作ることができて良かった。

自分の他に同僚の @monochromegane 氏が Unite.vim の上級活用法 (agとUnite.vimで快適高速grep環境を手に入れる - Thinking-megane)や、氏が EUC-JP/Shift-JIS 対応を進めている ag による Unite grep の高速化などについて話した。カーソル位置の単語で Unite grep する方法*1なんかが個人的には参考になった。Unite の設定とかはネットで拾った情報のコピペで済ませていたので、実際に目の前で解説してもらいながら使い方の設定をすることで新たな発見をすることができ、大変良かったと思う。

4月に勉強会がつらくなって Fukuoka.rb もやってなかったんだけど、またぼちぼち再開していきたいと思った。


*1 以下のようなコードだけどなぜか自分の環境だと期待した通りに動いてくれなくて、Pattern: というプロンプトが出て検索キーワードが確認できるはずなんだけど、何かキーを入力しないキーワードが表示されなくて不便な感じ。

" grep current word
nnoremap <silent> ,cg :<C-u>Unite grep:. -buffer-name=search-buffer<CR><C-r><C-w>

| @技術/プログラミング

最近プログラミングに飽きてきてると思う。なんかプログラマーになる前にやりたかったことはたいてい出来るようになってきた気がする。最近の流行の Chef とか Puppet とかを勉強したりもしてなくて、学ぶべきことは山ほどあるのに、マンネリ化した状態で無為に日々を過ごしてる感がある。きっと自分は日々の仕事から細々とした実践的知識を学んでばかりでちゃんと本を読んで勉強していないから飽きてきてるんだと思う。もっと本を読まないといけない。本を読まないといけないんだけど集中力がなくて本が読めない。なので刺激を求めて Emacs に再々々入門してみることにした。とりあえず vim で ~/.emacs を編集して Emacs 起動したときにエラーが出ないようにした。頑張ります。