QFixHowm - コマンド解説1

このページではvim用howmとして「QFixHowm」 をインストールし、キーマップを g と設定したものとして説明しています。

この場合、新規メモの作成 ,c は実際には g,cと入力します。

キーマップのカスタマイズ

QFixHowmでメモを書く

,cで新規メモの作成

g,cを入力します。

=

[2009-01-01 01:01]

というようにタイトル行とhowmタイムスタンプが挿入された内容のファイルが作成されます。

デフォルトの設定だとファイル名は作成時刻になっています。

行頭が = と空白の行がタイトル行です。適当なタイトルを入力してください。

タイトルを考えるのが面倒な場合はとりあえず改行を入力して本文から始めて下さい。

タイトルを入力しなければ、本文から適当に設定されます。

基本的にフリーフォーマットなので後は自由に入力してください。

タイムスタンプの前に本文を書いても、後ろに書いてもフリーフォーマットなので問題有りません。

g,n などを使用して複数のメモを一つのファイルに書くこともできます。

一ファイル複数エントリの補助コマンド

g,nなどのコマンドを使用しなくても行頭に = を書けばそれがエントリのタイトルとして扱われ、保存時にタイトルとタイムスタンプが付加されます。

何度かg,cで新規メモを作成して適当に入力して普通のファイルと同様の方法で保存してみて下さい。

本文中のURLやファイル名

またURLやファイル名を書くと<CR>でvimかブラウザで開けるようにリンク化されますが2byte文字や空白を含むパスなどは扱えません。

2byte文字や空白を含むパスをリンク化して扱いたい場合は gotoリンクを使用してください。

gotoリンク

マルチバイト文字や空白を含む場合は [c:/temp/ほげ ふが.jpg:] のように [ と :] で囲むことでもリンク化可能です。

QFixHowmで扱えないファイル名の場合は最終的に gfコマンドが呼び出されます。

ローカルファイルへのリンクは howm_dir を移動しても無効にならないように howm://を使用してリンクを張ると良いかもしれません。

基準ディレクトリを使用してローカルファイルにリンクを張る

画像のリンクを多用している場合、QFixHowmのエントリをHTML変換表示してblogのように画像と同時に表示する事も出来ます。

画像はサムネイル表示が行われ、一部のはてな記法はテーブルやリスト、引用部分などのHTMLタグに変換可能です。

howmファイルをHTML変換してローカルblogのように使用する

こういうエントリが

このように 変換されます。

エントリの時刻表示などのカスタマイズ

デフォルトでは 本家Emacs版準拠で、howmタイムスタンプが付加された状態で新規ファイルが作成されます。

コマンドで挿入されるテンプレートのカスタマイズ」を利用すると、新規ファイルの内容を自由に設定可能です。

たとえば新規エントリはタイトル記号だけで作成するようにできます。

"新規エントリのテンプレート

"%TAG%はQFixHowm_DefaultTagに変換されます。

let QFixHowm_Template = [

\"= %TAG%",

\""

\]

タイトルやタイムスタンプは保存時に自動で付加されます。

タイトルを付けたい時はタイトルから、とにかくメモしたい場合は<CR>を入力してからメモすると便利です。

またhowmタイムスタンプを作成時刻ではなく、更新時刻に変更して、同じファイル内のエントリを howmタイムスタンプでソートしたりすることも出来ます。

個人的にはメモは更新時刻こそが重要だと思いますので、一ファイル複数エントリで使用する場合は一度以下を参照してみて下さい。

更新時間の管理

快適な使用のために

,uでクイックメモを使用する

g,uを入力するとクイックメモファイルを開きます。

常に同じファイルが開かれるので、一時的なメモなどを書くのに使用してください。

クイックメモのファイルはhowm_dir へ作成され、ファイル名は QFixHowm_QuickMemoFileで指定します。

"クイックメモのファイル名

let QFixHowm_QuickMemoFile = "Qmem-00-0000-00-00-000000.howm"

クイックメモに特定の機能や制限はないのでどのように使用しても問題有りませんが、想定している使用例としては以下のようなものがあります。

  1. 何か思いついたらクイックメモをとりあえず開いて、 ,p や ,nでアイディアメモのエントリを追加する。
  2. エントリを編集する。
  3. ある程度アイディアがまとまって独立したエントリファイルにしたくなったら、 ,X や ,W コマンドで別ファイルに独立させる。

クイックメモを一ファイル複数エントリのアイディアノートとして使い、アイディアがまとまったら独立したエントリファイルにするというような方法です。

個別のエントリファイルで使用してもさほど変わりませんが、アイディアが一つのファイルにまとまっていると一覧するのに有利です。

複数エントリで扱う場合は ,o のアウトラインモードを一度使用してみて下さい。

アウトラインモード

クイックメモに限った話ではありませんが、ファイル内のエントリは g,rs g,rS でhowmタイムスタンプを利用してソートすることも可能です。

一ファイル複数エントリの補助コマンド

%Y-%m等の日付もファイル名に使用できます。

一月単位のクイックメモにしたいなら以下の通りです。

"クイックメモファイル名

let QFixHowm_QuickMemoFile = 'Qmem-00-%Y-%m-00-000000.howm'

複数のクイックメモ

複数のクイックメモを使い分けることが出来ます。

2g,uのようにカウント指定すると QFixHowm_QuickMemoFile2 のように対応する番号のオプションで指定されたファイル名のクイックメモが開かれ、以降は g,uを使用すると一番最後に指定されたクイックメモが開かれます。

g,U でデフォルト(QFixHowm_QuickMemoFileのクイックメモファイル名)に戻すことが出来ます。

"クイックメモファイル名の設定例

let QFixHowm_QuickMemoFile = "Qmem-00-0000-00-00-000000.howm"

let QFixHowm_QuickMemoFile1 = "Qmem-01-0000-00-00-000000.howm"

let QFixHowm_QuickMemoFile2 = "Qmem-02-0000-00-00-000000.howm"

クイックメモのファイル名は連番である必要はありません。

"クイックメモファイル名の設定例

"デフォルトとg,Uでは通常のクイックメモ、

"1g,uで予定専用のクイックメモ、2g,uで月単位のクイックメモを使用する

let QFixHowm_QuickMemoFile = "Qmem-00-0000-00-00-000000.howm"

let QFixHowm_QuickMemoFile3 = "Schedule-0000-00-00-000000.howm"

let QFixHowm_QuickMemoFile5 = "%Y/%m/MonthlyMemo-%Y-%m-00.howm"

,j で特定ファイルにリンクされたメモを書く

現在 public.cppというソースを編集していて public.cppに関するメモを書きたいとします。

しかし public.cppは公式なものなのでソースにメモは書きづらい、そういうような時 public.cppに対応した howmファイルを作成してメモを書くことが出来ます。

直接メモにジャンプするので高速です。

ペアリンクhowmファイル

QFixHowmで日記を書く

g,<Space>で日記を書くことが出来ます。

"日記ファイル名

let QFixHowm_DiaryFile = '%Y/%m/%Y-%m-%d-000000.howm'

適当に設定を変えて通常のメモとは別の専用ディレクトリに日記ファイルを作成するようにしても便利かもしれません。

"日記ファイルをhowm_dirのDiaryに作成

let QFixHowm_DiaryFile = 'diary/%Y/%m/%Y-%m-%d-000000.howm'

カレンダー表示からQFixHowmを使用した日記を書くこともできるので、カレンダー表示した日記を簡単な予定・TODO機能として使うことができるかもしれません。

メニューとカレンダー

日記のみ一覧表示させたい場合は、 ,Aのファイルリストが使えます。

ファイルリスト

QFixHowmでメモを探す

メモ(エントリ)を探す方法は、更新時間での一覧表示と文字列検索の2種類有ります。

更新時間での一覧表示関係のコマンドはキーマップを変更可能です。

最近 "作成/更新/閲覧" したファイル表示のキーマップ

デフォルトでは Emacs版の動作に合わせて、エントリの更新時間はファイルの更新時間が使用されますので、一ファイル複数エントリだとファイル内の全てのエントリが同じ更新時間として扱われます。

一ファイル複数エントリでも個別に更新時間を扱いたい場合は以下を参照して下さい。

更新時間の管理

,m の「MRUリスト」は設定にかかわらず、最終更新または閲覧時間に応じてリスト表示されます。

QFixHowmでは ,mをエントリ一覧表示の基本にする事をおすすめします。

,l で最近更新したエントリを検索

g,cでいくつかファイルを作って保存してから、ノーマルモードでg,lを入力してみてください。

デフォルトでは過去5日以内に更新されたエントリが、更新時間順にプレビュー付きで表示されます。

10g,lのように指定すると過去10日分のエントリが更新時間順に表示されます。

なお10g,lのように期間指定すると、以後はg,lの検索期間も10日に変更されます。.

起動直後の検索期間は.vimrcで設定できます。

",lコマンドのデフォルト検索期間

let QFixHowm_RecentDays = 5

デフォルトではエントリの更新時間はファイルの更新時間が使用されますので、一ファイル複数エントリだとファイル内の全てのエントリが同じ更新時間として扱われます。

更新時間の管理

,L で最近 "作成" されたエントリを howmタイムスタンプで検索

使用方法は ,l と同じですが、ファイルの更新時間ではなく howmタイムスタンプを検索するため、最近 "作成" されたエントリが検索されます。

3g,L -> 過去3日間に "作成" されたエントリ検索(以降の検索期間は3日に変更されます)

検索期間は ,l と共用されます

また g,Sで 「カーソル位置の howmタイムスタンプを現在時間に更新」したエントリは、最近 "作成" されたエントリとして扱われることになります。

これを利用すると g,L は手動で更新フラグを付ける、「最近 "作成・更新した" エントリの検索」として使用できます。

,m でhowm専用MRUリストを利用して最近 "作成 / 更新 / 閲覧" したファイルにアクセス

g,mでhowmファイル専用のMRUリストが表示されます。

また 10g,mのようにカウント指定すると表示数を変更することが出来ます。

MRUリストは最近編集/閲覧したファイルをアクセス時間順にリストにしたものです。

最近更新したファイルの検索」では更新保存したファイルしか対象になりませんが、MRUリストでは単純に閲覧しただけ、バッファを切り替えただけでも対象になります。

これにより一度検索を利用して閲覧しただけのファイルでも、再び検索で探すような必要が無くなります。

grepなどの処理が入らず、基本的にオンメモリで処理されるので高速です。

howmはファイル名で内容を推定しにくいので、普通のMRUを使用するよりも便利かと思います。

詳しいオプションや設定は以下を参照して下さい。

MRUリスト

<目次へ>

,s で固定文字列を使ってファイルを検索

ノーマルモードで g,s を入力するとデフォルトでカーソル下の文字列が検索文字列に設定された文字列入力画面になります。

howmファイルを開いている場合は、 g,f でも検索出来ます。

<CR>で確定すると固定文字列検索(正規表現を使用しない検索)が実行されます。

形式:ハイツレギスタ社製Tauri 34

↑ここにカーソルがあった場合ノーマルモードでg,sを実行すると"ハイツレギスタ"が検索文字列に設定されます。

デフォルトの検索文字列は<C-u>や<C-w>で削除して変更できます。

<CR>を押すと入力した文字列で、全てのhowmファイルを検索して更新時間順に表示します。

,g で正規表現を使ってファイルを検索

g,g を使うと外部grepでファイルを探します。

外部grepの設定をしていない場合は、内部grep(vimgrep)が使用されます。

g,\g を使うと設定にかかわらず、内部grep(vimgrep)でファイルを探します。

howmファイルを開いている場合は、 g,e でもgrep出来ます。

howm_fileencodingを cp932(Shift_JIS) に設定した場合、一部の日本語文字(ダメ文字)が、正規表現を使用して、grep検索できないことがあります。

正規表現を使用しない検索には問題有りませんので、日本語の検索では基本的に ,s の検索を使用して、どうしても必要な時に ,g の正規表現検索を使用することをおすすめします。

g,\g の vimgrep を使用した検索には問題有りません。

詳しくは 「cygwin/GNU grepの「ダメ文字」対策」 を参照して下さい。

,a で全エントリを一覧表示

g,a を使うと全てのファイルからヘッダ = を検索します。

ファイル数が増えてきて遅くなってきた時は代替コマンドの使用を検討してください。

全エントリ一覧の高速な代替コマンド

,A でファイルリストを表示

g,A で「ファイルリスト」が表示されます。

ファイルリストは howm_dir 内のファイルをファイル名で検索して一覧表示するものです。

デフォルトでは全ての日記が表示されます。

タイトル行/カテゴリ検索

QFixHowmでは通常のタイトル検索を実装していません。

その代わりにQFixHowmではより柔軟に扱える、「エントリフィルタ」を実装しています。

エントリフィルタ」はタイトル検索やカテゴリ検索のようなイメージで扱う事が出来ます。

  1. タイトル/カテゴリ検索したい単語を検索
  2. # で「エントリフィルタ」を実行
  3. 検索単語を含む全てのエントリのタイトルが表示される

この状態で必要なら s コマンドの絞り込みを行ってください。

検索結果を「連結表示」も出来ます。

字義通りのタイトル検索を行いたい場合は、g,g のgrepから直接 ^=.*検索単語 などとしてタイトル検索は行えます。

QFixHowmのエントリ / ファイル削除

エントリや予定・TODO単位で削除したいなら g,x でカーソル位置のエントリや予定・TODO単位の削除が行えます。

またg,Xでカーソル位置のエントリを新規ファイルへ移動することも出来ます。

ファイル自体を削除したい場合は、howmファイルの中身を全削除して保存するか、Quickfixウィンドウ上で D コマンドを使用して削除します。

エントリの自動整形」を無効にしていないなら、空行のみのファイルを保存しても削除されます。

Quickfixウィンドウ上のDコマンドですが、ファイル単位で削除されますので、一ファイル複数エントリで使用している場合は特に気をつけて使用して下さい。

基本的にはファイルの中身を全削除で消すのが安全です。

メニュー画面

メニュー画面」へ移動しました。

その他のHowmコマンドとQuickfixウィンドウの操作

その他のHowmコマンドとQuickfixウィンドウの操作は以下にあります。

QFixHowm - コマンド一覧