物置き

ChangeLogメモを検索するVimスクリプト

普段からChangeLogメモ形式でいろいろメモをとっているんだけど、
Vim上で検索できる、自分好みのものが見あたらなかったので作成。
ということで、晒してみるテスト。

これは何か

横着プログラミング 第1回: Unixのメモ技術で紹介されているclgrepスクリプトを自分用に書き起こしたもの。*1


このスクリプトの機能をおおざっばに説明すると、あらかじめ指定しておいた単一のChangeLogメモファイルを指定したキーワードで、アイテム単位で検索し、検索結果を別ウインドウに表示。
VisualStudioの複数ファイル検索みたいな動作でChangeLogメモ検索を行うような感じ。

インストール

必要なもの
手順

1. ファイルを~/vimfiles|.vim/pluginにコピー
2. .vimrcに、ChangeLogメモファイルのパスを記述
こんな感じに

" clmemogrep.vim
let g:clmemogrep_changelogfilepath = '~/ChangeLogMemo/ChangeLog.txt'

使い方

CLMGrepコマンドで検索

:CLMGrep 単語1 [単語2] [単語3]...
  • 複数単語を指定した場合は、AND検索

CLMGrepReverseコマンドで検索結果を逆順標示

:CLMGrepReverse 単語1 [単語2] [単語3]...

CLMGrepとか、タイプしづらいので適当にmappingするが吉

動作画面

自分のメモから「unix」「時間」「計測」で検索した場合

こんな感じで結果を表示。

検索結果を折りたたみ表示することもできる

検索キーワードは色分けして表示。

設定用変数

ChnageLogメモファイルのパス
	let g:clmemogrep_changelogfilepath = './ChangeLog'
ChnageLogメモファイルの文字コード
	let g:clmemogrep_fileencoding = 'cp932'  " 'euc-jp'とか'utf-8'とか

ChangeLogメモの文字コードが環境の標準的なものじゃない場合に設定
デフォルト値はencオプションの値を使うので、標準的なエンコードの場合は特に設定する必要はない。

itemの開始パターン、終了パターン(Python正規表現)
	" 1カラム目が空白で2カラム目がasteriskで始まる行
	let g:clmemogrep_startpattern = '^\s\*'
	" 空行または1カラム目から始まる行(=entry header)
	let g:clmemogrep_endpatern = '^($|\S)'

Itemの開始パターン、終了パターンは、自分用メモにあわせたものなので、
書き方によっては、変更が必要になるかも。
この変数はPythonスクリプト部分で使っているので、
Vim正規表現ではなく、Python正規表現で指定する必要がある。

結果ウインドウの位置
	let g:clmemogrep_Direction = "rightbelow"
	let g:clmemogrep_Split = 'v'

デフォルトだと結果ウインドウは下の方に表示されるんだけど、
これを変更したい場合、これを変更して表示される位置を変更できる。
clmemogrep_Splitに'v'を設定すると、ウインドウを垂直分割する。

結果ウインドウの高さ
	let g:clmemogrep_WindowHeight = 15

結果ウインドウを表示時の初期高さを変更する場合に設定する。

検索実行後、結果ウインドウにカーソルを移動するか?(0で元の状態を維持)
	let g:clmemogrep_setfocus=1

デフォルトだと検索実行後、結果ウインドウにフォーカスを移動する。
移動したくない場合は0を設定する。

検索結果を折りたたみ表示するか?
 let g:clmemogrep_fold=0

0以外の値を設定すると、検索結果を折りたたんで表示する。
ただし検索結果テキストが結果ウインドウ内にすべて収まる場合は折りたたまない。

先頭行にヘッダを表示
	let g:clmemogrep_showheader=1

0以外の値を設定すると結果ウインドウの先頭行に「Results N items for keywords」というような表示を行う。

アイテム間を句切る文字列
let g:clmemogrep_itemseparator="----------"

この変数を定義しない場合は、間を入れずに出力する。
デフォルトは未定義。

ダウンロード

clmemogrep.vim 0.0.3

Windows上のKaoriya版GVim7.1と、CentOS上に入れたVim7.1でのみ動作を確認。

(2015-10-22追記:GitHubに移行)
https://github.com/ampmmn/vim-clmemo-grep

*1:オリジナルの方はRubyスクリプトなのでどこからでも使えるのに、これはわざわざVim上でしか使えないようにした劣化版