■
初めて自分でvim script書いた。
職場で日次でファイルを作成してメモを取ることをしていて、毎朝yyyymmdd.txtを作るバッチを叩いている。具体的な手順は、vimでバッチを開いて、quickrunさせて、結果とバッチの2つのバッファを閉じて、生成したメモ用ファイルを開く。面倒くさい。キーストロークふたつくらいでできたい。
function! s:OpenTodayLog() let l:dir = expand('~/log') if !isdirectory(l:dir) call mkdir(l:dir) endif execute ':edit ' . l:dir . '/' . strftime('%Y%m%d') . '.txt' endfunction command! -nargs=0 TodayLog call s:OpenTodayLog() nnoremap <Leader>l :TodayLog<CR>
初めてちゃんとvim scriptを書いた。コマンド定義してからキーマッピングしてるのが冗長で、本当はキーマッピングに直接関数呼び出しを指定できたらいいんだけど、SIDがないとか、それはスクリプトローカルな関数だからとか、もうちょっとどうすべきかヘルプ読んで決めなくちゃと思う。特にSIDがよくわからない。
なんとなく.vimrc読み返してたら、殆ど同じ記述があって驚いた。
http://vim-users.jp/2010/11/hack181/
上記サイトの:JunkFileコマンドを、そのままコピペして使ってなかったものだった。あー車輪再発明した、けれども、おっかなびっくり書いた自分のスクリプトが間違った書き方ではない(小物スクリプトではあるものの)と思って安心はした。
追記
コメントをもらって、キーマップから関数呼び出しの書き方を教わったので.vimrcをそのように直した。
動きを確認してからヘルプを読んだら、最初に読んだときに分からなかったことが少し分かった気がする。SIDはmapコマンドの変換処理を挟んで、スクリプトローカルなスコープを解決する修飾子みたいなものになると理解しました。
# 英語を読むときも、ある程度あたりがついてないと読めないなあ。