すこしふしぎ.

VR/HI系院生による技術ブログ.まったりいきましょ.(友人ズとブログリレー中.さぼったら焼肉おごらなきゃいけない)

vimでメモ取る環境整備

ふと,突発ミーテの時とかにさらっとメモを用意できる環境が欲しいなと思いました. いちいちcdしてvim file名とかめんどくさいもんね.

ということで,shellscriptの練習がてらメモ取る環境を作ってみたよ.

作りたいイメージ

こんな感じにできるといいなー,っていうイメージ

  • markdownでかける
  • terminalからコマンド一発で編集画面にとぶ
  • ファイル名は"memo_現在日時.md".
  • 引数ある場合はそれがそのままタイトル
  • 既に存在する場合はそのファイルを開く
  • dropboxで共有
  • 作成日時,更新日時をfile内に埋め込む
  • 自作テンプレートの利用ができる
  • できればリアルタイムプレビューとかもほしい

というかんじでいきます.stepは大きく二つで,

  • vimでのmarkdown環境整備
  • terminalでのコマンド作成

となります.それじゃいってみましょう.

vimでのmarkdown環境整える

vim markdownとかでぐぐると大量に参考記事がでてきます. ちょこちょこ見ていきましょう.

シンタックスハイライト

neobundleつかってmarkdown-vimをいれました.

参考:vimでmarkdown

リアルタイムプレビュー

chromeにmarkdown preview plusをいれました. これで.mdファイルをブラウザで開けます. .mdファイルを更新するたびにブラウザ上の出力アップデートされます.

参考:vimでmarkdown

terminalからchromeひらけるように

openコマンドが便利です.chromeのpathを指定してやれば起動できます. てことでaliasつくっておきました.

alias chrome="open -a /Applications/Google\ Chrome.app"

参考:macのターミナルからアプリを起動する方法

autodate導入

保存時の更新日時を入れてくれるプラグイン.べんり.テンプレートつくってその一番上とかに

Last Change: .

って書いとけばok.

参考:autodate.vim : ファイルのタイムスタンプ記述を自動的に更新

memoコマンドをつくる

以上でvimでmarkdownを書く環境+αは整ったといえるでしょう.

今度は先に挙げた要件を満たすようなmemoコマンドをshellscriptで書いてみます.

参考:秒速でvimでメモを書く条件

makememo.sh (~/programming/shellscript/以下においときます)

function makeMemo(){
  #引数一つだったらそれをタイトルに.なければ日時をタイトルに
  if test $# -eq 1 
  then
    fileName=$1.md
  else
    fileName=memo_`date +%y%m%d`.md
  fi
  folderPath=~/Dropbox/memo/

  #対象ファイルの存在確認
  if [ -f $folderPath$fileName ]
  then
    #なにもしない
    echo "open file"
  else
    #テンプレートをリネーム
    echo "make file"
    cp $folderPath'memoTemplate.md' $folderPath$fileName
    #テンプレートの書き換え
    sed -i".bak" -e "s/createtime/`date +%Y_%m_%d_%T`/" $folderPath$fileName 
    sed -i".bak" -e "s/memoTitle/$fileName/" $folderPath$fileName 
    mv $folderPath$fileName.bak $folderPath/.bak
  fi

  #該当ファイルを開く
  vim $folderPath$fileName
}

.zshrc

source "~/programming/shellscript/makememo.sh"
alias memo="makeMemo"

できたー.

memoと打つとその日の日付を含む.mdが,memo hogeと打つとhoge.mdがdropboxのmemoフォルダ以下に保存されていきます.

思考のちょっとした整理用なので,フォルダ分けとかも特になし.blog記事書くときの思いつきメモとかに使っていこうと思ってます.

ただねー,昔のメモを読みたいときにファイル名わかんないとopenできない,むしろ新しいの作っちゃうのが頂けないですねー.時間あるときに,shellscriptでのoptionの使い方とか勉強してもうちょっと整理してみようかな.memo --listでmemoディレクトリ内部表示とか,mamo --name hogeで指定ファイルなければアラートとか.でもあんまりoptionつけても煩雑になってコマンド自体が面倒になるかもなぁ.

とりあえず感想

初めてのshellscriptなので結構勉強になった. ファイルの存在確認とか,sedによるファイル書き換えとか. 普段使わないので入門にはちょうど良い題材だった気がするかな. またちょこちょこオレオレコマンドつくってみようと思います.