fudist

QFixHowm - vim用howmプラグイン

vim/gvim用メモ取りシステムhowm

操作一覧
コマンド一覧
解説ページ
QFixHowm | インストール | 基本的な使い方 | コマンド一覧 | 検索リンクとアクションロック | 予定とTODO | オプション | 快適な使用のために | 更新時間の管理

これは何?

howmはエディタで手軽にメモや予定、TODOを書いて、検索するためのシステムです。
QFixHowmは、vim/gvimにhowmを実装したスクリプトで、拡張Quickfixの機能による追加検索で絞り込み、ソート、結果表示編集などが可能です。
Quickfixウィンドウを使用しているので、柔軟な検索結果表示/非表示が可能です。
またプレビュー&絞り込み検索付きgrepとしても使えます。(→「grepとして使用する」)
基本的なデータ形式や操作はEmacs版(本家)に合わせてありますが、「予定・TODOの繰り返し」など、一部に独自拡張されている部分があります。

howmでは、細かいことを気にせずメモや日記、日報が簡単に作成できます。
メモを取る時いちいちファイル名を気にしなくても良いので非常に楽です。
予定やTODOも管理できて、一行のメモでもどんどん書き込めます。
howmファイル自体はただのテキストファイルなので、他のソフトからのインポートや変換なども自由に行えます。

(スクリーンショット)
中央に表示されているのがプレビュー画面で、現在Quickfixウィンドウで選択されている行がハイライトされています。

Emacs版やhowm-mode.vimで作成したデータは、ほぼそのまま使えます。
howm-mode.vimとの違い
他のhowmを使用していた方へ

Emacs版(本家)
http://howm.sourceforge.jp/index-j.html

vim/gvim version 7.0以降対応で、日本語を扱える(iconvが使用できる)ことが前提です。
動作確認は主にWindowsのgvimを使用して行っています。
Linux(Ubuntu)やコンソール版での動作確認も行っていますが、全ての環境での動作を保証するものではありません。


インストール

QFixHowm - インストール」にまとめました。
他のhowmを使用していた方はインストール後に「他のhowmを使用していた方へ」を参照してください。

ダウンロード

リリース版
qfixhowm.zip

休日定義ファイル (2009-) 
Sche-Hd-0000-00-00-000000.howm
howm_dir にコピーして下さい。

更新履歴

(2009/11/25)
  • QFixGrep単体で使用している時、BGrepでエラーが出るのを修正しました。
    QFixHowmを使用している場合は問題有りません。
(2009/11/12)
  • ,l  ,L ,y ,t 等のコマンドでカウント指定した場合、ウィンドウサイズも変更されていたのを修正しました。
(2009/11/02)
  • タイトルに、 { } を使用すると 「howm専用MRU」 でエラー表示されるのを修正しました。
  • come-from/Wikiリンクキーワードに長さの違うキーワードや正規表現記号を含むと無効になる事があるのを修正しました。
  • ,rk でキーワードファイルを再作成した時、キーワードの存在行を表示するようにしました。
(2009/10/23)
  • Quickfixウィンドウの保存と読込」 にカウント指定を追加しました。
    保存、読込の際にカウント指定すると、ファイル名に指定カウントを付加したファイル名で処理します。
    現在の結果を保存して一時的に別の検索をしたい場合や、複数の結果を保存したい場合に使用してください。
  • エントリのランダム表示」 でエントリリスト保存ファイルが古い場合は自動更新するオプションを追加しました。
    デフォルトは10日前で、0にすると自動更新しません。
    "ランダム表示用エントリリストファイルを自動更新
    let QFixHowm_RandomWalkUpdate = 10
  • ,H で簡易ヘルプを表示するようにしました。
  • ワイルドカードチャプター」で行頭に . を使用する いわゆる「階層付きテキスト」も数値形式チャプターに変換できるようにしました。
  • 文書構造とユーザ独自のシンタックスファイル」のシンタックスファイルを修正しました。
  • リンクからファイルを開く時のウィンドウサイズを修正しました。
  • ファイルを読み込むバッファウィンドウをQuickfixウィンドウに移動する直前のバッファウィンドウに固定しました。

不具合と思わしき動作や、本サイトの記述と実際の動作が異なる場合は、お手数ですが「連絡先」までご連絡下さい。

テスト版 (----)

QFixHowmの使い方

howmの基本的な使い方
にまとめました。

プレビュー付きgrepとして使用する

grepとして使用する」にまとめました。
QFixHowm は QFixGrepを利用しているためにプレビュー付のgrepとして扱う事も可能です。

環境設定


環境設定

各種オプション設定によって、動作をカスタマイズ可能です。
オプションは3つに分かれています。
QFixHowmはQFixGrepを使用しているので設定がQFixGrepと共通になります。
オプション

快適に使用するための設定は以下のページにまとめました。
快適な使用のために

困った時は

QFixGrep、QFixHowmの動作がおかしいと思われる場合はお手数ですが、「連絡先」までご連絡ください。

異なる文字エンコーディングのファイルと文字化け

vim/gvimに文字コードの自動判定が設定されていなくても動作するように howmファイルには強制的にhowm_fileencodingを設定しています。
したがってhowmファイルに howm_encoding以外の文字エンコードを使用している場合は必ず文字化けします。
また文字化けの際はリードオンリーになってしまうので、文字エンコーディングを指定しての再読込も効かなくなってしまいます。
このような場合は次の様に設定するとエンコーディングの強制設定が無効になりますので、エンコーディングを変更するなどしてください。。
異なる文字エンコードのファイルは txt などにリネームしてからエンコードを変更するのも手です。

"howmファイル読込の際、howm_fileencodingに強制設定する/しない
let QFixHowm_ForceEncoding = 0
外部grepでは異なる文字エンコーディングのファイルは検索できないので、howm_dir内のファイルの文字エンコードは、必ず howm_fileencodingに統一して、QFixHowm_ForceEncoding=0 は基本的に設定しないで使用してください。
howm_fileencodingを強制しない場合は vimで文字化けするファイルはQFixHowmでも文字化けします。
特に一行だけの思いつきメモを良く作成するような場合、使用している日本語文字種が少ないため文字化けすることがあります。
vimの文字化けについて

どうしても異なる文字エンコードを混在させたい場合は、QFixHowm_ForceEncoding=0 を設定して、検索は常に ,\g (vimgrep)で行えば一応可能です。

パスの設定

基本的には問題ないはずですが、正規表現に使用する文字や空白を含むパスなどを使用している場合は、動作に問題が出る場合があります。
特にWindowsの場合は、shellslash を設定してやるとパスに関わる問題が解消される事があります。
set shellslash

ウィンドウ周り

QFixHowmはQFixGrepを利用して作成されています。
動作がおかしいと思ったら、以下のページも参照してみて下さい。
トラブルシューティング

バッファを閉じる関係のコマンドで、サイズがおかしくなる場合、Quickfixウィンドウの高さ制限やサイズ固定モードなどの使用を検討してください。
またQuickfixウィンドウ上へ <C-w>. などで移動した後で、<C-w>. を実行するとデフォルトサイズに戻ります。



次のページ「howmの基本的な使い方」へ移動

QFixHowm と howm-mode.vim との主な違い

howm-mode.vimと比べて次のような特徴があります。

howm-mode.vim を 使用している場合 mygrepprg に howm_grepprg と同じものを設定すれば、後は howm-mode.vimの設定がそのまま使えます。
ただし機能が競合しますので、howm-mode.vim自体は無効にして下さい。

QFixHowm独自の高速化

他のhowmを使用していた方へ

操作については、以下のリンクを参照してください。
Howmコマンド一覧

デフォルトでは、なるべくEmacs版と同じ動作を行うようにしていますが、howmの移植を目的としているわけではありません。
Emacs版のように一ファイル一エントリのメモだけではなく、Changelog的な一ファイル複数エントリの併用も想定していて、これを快適に使用できるよう各種拡張を加えています。
QFixHowmはhowmのデータ形式を流用可能な、以下の様なメモ取りシステムを目標として開発されています。
  • ファイル数が2000や3000あっても、最近更新したファイルの検索 / 閲覧をストレス無く扱える事
  • 一ファイル複数エントリでも、個別に更新時間を管理できる事
  • 一ファイル複数エントリで、更新時間順にファイル内のエントリーをソート可能な事
  • 繰り返す予定・TODOを管理できる事
このために実装された拡張機能として以下のものがあります。
howm専用MRUを使用する
クイックメモ
QFixHowmで日記を書く
更新時間の管理
一ファイル複数エントリの補助コマンド
予定・TODOの繰り返し
サイドバー

なおメニュー画面はEmacs版と違い、表示システムがQuickfixウィンドウに依存しているため、ほとんど機能がありません。
よく行う操作(特定の単語検索など)はキー操作をスクリプトの形で登録する「マクロアクション」が実装されているので、メニュー画面にコマンドを定義して使用する事になります。
このためメニュー画面よりは「サイドバー」を使用する方が快適に扱えると思われます。
基本的にはメニュー画面を使用するより個別コマンドを使用することを想定しています。

また外部grepを使用出来る場合では、さほど気にする必要はありませんが、vimgrep(内部grep)は非常に遅いため、可能な限りgrepを使用しなくてもすむように考慮しています。
コマンド的には ,uの「クイックメモ」や,m の「howm専用MRUを使用する」をメインに使用する事を想定しています。

QFixHowmの特徴的な部分に関しては以下が参考になるかと思います。