QFixHowm | インストール | 基本的な使い方 | コマンド一覧 | 検索リンクとアクションロック | 予定とTODO | オプション | 快適な使用のために | 更新時間の管理 howmではファイルの更新時間をエントリの更新時間として扱っています。 一ファイル複数エントリの場合はファイルを保存すると、同じファイル内の全てのエントリの更新時間は最新のものとして扱われます。 このため一ファイル複数エントリでhowmを使用する場合、最近更新したエントリを一覧表示や検索すると少々面倒です。 一ファイル複数エントリでも更新時間でエントリを扱いたい場合、まずは ,m の「howm専用MRU」を使用してください。 一ファイル複数エントリでもエントリ個別に最近アクセスした順に並ぶので、エントリ単位で最近作成・更新されたエントリにアクセスすることが出来ます。 ただしMRUリストの保持数を超えていたりすると、MRUリストではアクセスできないケースも当然あります。 一ファイル複数エントリでも、最近更新したエントリをエントリ単位で検索する方法としては手動で更新する方法と自動で更新する方法があります。 以下の方法では、更新時間を埋め込む事になりますが、エントリの更新時間をきちんと扱う事が出来ます。 手動で更新時間を変更するg,S を使用するとカーソル位置の howmタイムスタンプは現在時間に更新されます。つまり g,S を利用すると g,L の「最近 "作成" されたエントリをhowmタイムスタンプで検索」は手動で更新フラグを付ける、「最近 "作成・更新した" エントリの検索」として扱えることになります。 簡易的ですが、このように g,S g,L を利用すると一ファイル複数エントリでも最近作成・更新されたエントリに、エントリ単位でアクセスすることが出来ます。 更新時間での一覧表示関係のコマンドはキーマップを変更可能です。 「最近 "作成/更新/閲覧" したファイル表示のキーマップ」 自動で更新時間を変更するQFixHowmにはエントリの更新時間を自動更新するオプションも用意されています。一ファイル一エントリなら QFixHowm_RecentMode = 1, 3、一ファイル複数エントリなら QFixHowm_RecentMode = 2, 4を使用します。 以下の説明を理解して使用するなら QFixHowm_RecentMode = 2 が一ファイル一エントリでも、一ファイル複数エントリでも使用できるのでおすすめです。 g,wを使用すると QFixHowm_RecentMode の設定にかかわらずhowmタイムスタンプは変更しないで保存します。 QFixHowm_RecentMode を 2 か 4 に設定すると ,l と ,L が自動的に入れ替わり、 ,l の一覧表示は一ファイル複数エントリでもエントリ単位で更新時間を認識するようになります。 更新時間での一覧表示関係のコマンドはキーマップを変更可能です。 「最近 "作成/更新/閲覧" したファイル表示のキーマップ」 QFixHowm_RecentMode = 1 に設定すると保存時に、「ファイル内の全エントリ」のhowmタイムスタンプが更新時間に変更されます。 ".vimrcで設定 = エントリのタイトル行1QFixHowm_RecentMode = 2 に設定すると保存時に、「カーソルのある位置のエントリ」のみhowmタイムスタンプが更新時間に変更されます。 一ファイル一エントリで使用しているなら違いはありません。 ".vimrcで設定 = エントリのタイトル行1 howmタイムスタンプの後にエントリ更新時間を埋め込む事も出来ます。 howmタイムスタンプ部分は更新されないので作成時刻のままです。 日記など作成日付が重要なときに使用する事を想定しています。 日記については「QFixHowmで日記を書く」方法もあります。 更新時間を別に埋め込むには QFixHowm_RecentMode = 3, 4を指定します。 ".vimrcで設定 = エントリのタイトル行
ただし、QFixHowm_RecentMode = 3, 4の場合、この形式で更新時間の埋め込まれていないファイルは
,l コマンドでは検索されません。
これらの設定を使用すると、大量にあるファイルから最近days日以内のエントリを検索したい場合、grepの時点で絞り込まれているので処理時間の高速化も見込まれます。 以上を前提としてQFixHowmは過去days日分の 埋め込まれた更新時刻形式をタイトルとみなして検索した後、適切に表示します。 QFixHowm_RecentMode
"QFixHowm_RecentMode > 0 で通常検索時に howmタイムスタンプソートを使用する/しない QFixHowm_RecentMode = 0の時でもエントリの更新時間に変更したい場合は QFixHowm_SaveTimeを設定します。 QFixHowm_RecentModeが非0の場合は、QFixHowm_SaveTimeの設定は無視されます。 QFixHowm_SaveTime
最近更新した検索の高速化 QFixHowm_RecentMode = 2, 4の場合、一ファイル複数エントリでも、最近更新したエントリ部分のみgrepに引っかかるようになります。このためファイル数がどれだけ多くても「,l で最近更新したファイルを検索」の処理速度はヒット数(最近更新したエントリの数)にのみ依存する事になります。 大量のhowmファイルを使用する場合は検討する価値があると思います。 またChangelogのように一つのファイルに大量のエントリを書くシステムとして扱うなら、QFixHowm_RecentMode = 2, 4で、ファイルを一月一ファイルなどとするのが処理速度的には一番有利になるでしょう。 ただしQFixHowm_RecentMode = 2, 4 には実装上の問題から注意すべき点があります。 QFixHowm_RecentMode = 2 , 4 の場合の注意事項 保存時に "カーソル位置のエントリ時刻のみ" 更新なので、たとえ変更されていても現在のカーソル位置に該当しないエントリの時刻は更新されません。 エントリ部分を更新した後、カーソルが更新エントリ内にあるうちに必ず保存するか、カーソルを更新したエントリ内に移動してg,Sでエントリ時刻を更新して下さい。 この問題はバッファを読み込んでからの全ての変更行を知る方法がわからないため、保存時に自動で更新された全てのエントリ時刻を更新する機能が未実装になっているために起こっています。 更新時間でソートするQFixHowm_RecentMode > 0 の時 ,f ,e ,s, ,g などのデフォルトソート方法でhowmタイムスタンプソートも指定可能です。"QFixHowm_RecentMode > 0 で通常検索時に howmタイムスタンプソートを使用する/しない 「快適に使うためのtips」へ戻る |