タイムスタンプの入ったファイル名でメモを開くだけのVimプラグイン

2020/09/13に公開

以下の記事を参考にしつつ、メモをとるための vim プラグインを作ってみた際の備忘録です。

https://qiita.com/bonjin6770@github/items/31e60707ecf2ad6c4496

自分は以下のような方法でメモを取っています。

  1. メモはいつも同じフォルダの下につくる。(後で検索するのが楽なので)
  2. メモはメモを取った日付 YYMMDD を頭につけて、その後ファイル名でメモの題名(Subject)を示します。
  3. メモ本体は Markdown で書いて、読むときは Chrome / Firefox の Markdown プラグインで読むか、Markdown Viewer を使う。

この用途を満たすプラグインを作ります。その際、以下の実装仕様を取り込みます。

  1. メモのファイル名にタイムスタンプ(YYYYMMDDHHMMSS形式)を入れる。
  2. ファイル名はSubjectから生成するが、空白文字は含まれないようにする(Subjectに含まれるスペース「 」は、「_」に置換する)。
  3. 保存フォルダはグローバル変数に設定する。なければ ~/Documents/Memo に保存する。
  4. メモの1行目に日付と、Subject を自動で入力する。

要するにvimのコマンドラインモードで :Memo ほげほげ のように打つと、20200901120105_ほげほげ.md のような名前のファイルを開いて、メモができるようにします。

実装環境

> vim.exe --version
VIM - Vi IMproved 8.2 (2019 Dec 12, compiled Dec 12 2019 13:19:27)
MS-Windows 32 ビット コンソール 版

ただし、バージョン依存が強いものは使っていないので、autoload が動く vim なら大体動くはずです。

成果物

GitHub にアップロードしてありますので、よろしければどうぞ:
https://github.com/aikige/memo.vim

実装上のポイント

基本方針

  • 本体は autoloadplugin に分割する。
    • スクリプトの大半は autoload/memo.vim に置くことで、起動のオーバーヘッドを減らす。
    • plugin/memo.vim 側はコマンドの呼び出し設定のみ書く。
  • vim-plug で管理できるようなフォルダ構成にする。

使い方

準備(インストール)

vim-plug を使っているのであれば、以下のような感じにして...

call plug#begin('~/.vim/plugged')
Plug 'aikige/memo.vim'
call plug#end()

vim をコマンドラインモードにして、 :PlugInstall コマンドを呼び出してインストールしてください。

プラグインマネージャを使っていないのであれば、github からExportしたZIPファイルをお使いの ~/.vim/ 以下、ないし %USERPROFILE%\vimfiles などに展開すれば動きます。

メモを作成する

vim のコマンドラインモードで :Memo hoge piyo のような感じでコマンドを打つと、 ~/Documents/Memo/202009010702_hoge_piyo.md のような感じの名前のファイルを開きます(それだけ)。

過去のメモを見る

:Memo と引数を付けずにコマンドを実行すると、メモの保存フォルダを開いて、過去の記事を参照できるようにします。

メモを検索する

:MSearch argument というコマンドで、文字列 argument を含むメモの検索ができます。
実際には vimgrep をしているだけですので、引数には正規表現を指定することもできます。

Discussion