読者です 読者をやめる 読者になる 読者になる

毎日変わる日報ファイルを同じコマンドでターミナルから呼び出す

少し前から、こんな感じのファイル名で日報を書いているのだけど、

2016-04-21_kdmt_d.txt

毎回これを、ターミナルなりMacのFinderなり、あるいはVimfilerなりで探して呼び出すのが面倒というか、だんだんボディブロー的につらくなってきて、そういうところでコストがかかると、結局本来の目的である日々の記録というものがないがしろにされていくので、ワンアクションで目当てのファイルを呼び出せるようにしたい、と思っていた。

けど、これがつねに同一のファイル名なら、.bashrc に

alias rept="vi -g /path/to/dir/2016-04-21_kdmt_d.txt"

とか書いておけばいいところ(ちなみに 'rept' は 'report-today' の略)、日報なので、その例で言うと「2016-04-21」の部分が毎日カウントアップされていくからそうもいかない。

ということで、何かbashの機能でその日の日付を取得&コマンドに反映する良い方法がないかなあと検索してみたら、こういう記事を見つけて、

command > `date +%Y%m%d_%H-%M-%S`.log
  # => 20141025_23-54-16.log

それをアレンジしてこんな感じに。

alias rept="cd /path/to/dir; vi -g `date +%Y-%m-%d`_kdmt_d.txt"

DEMO

f:id:note103:20160421154933g:plain

出た。
レッツ生産性向上!

追記

Vimから直接呼び出せるのでは、と思ったので試してみた。

以下の関数&マッピングをvimrcに追加して、

function! s:rept()
  execute ":sp ~/sample/report/daily/".strftime('%Y-%m-%d')."_kdmt_d.txt"
endfunction
nnoremap <silent> <Leader>re :<C-u>call <SID>rept()<CR>

nmap に設定した <Leader>re を叩くと……

DEMO

f:id:note103:20160421191240g:plain

出た。
VImから呼ぶ場合は、編集中のファイルを残しておきたいことが多そうなので、分割してもう片方に出すようにしてみた。