QFixHowm - カスタマイズ

オプション一覧

各種オプション設定によって、動作をカスタマイズ可能です。

オプション一覧QFixHowm/QFixGrepオプション一覧

オプションは以下のように分かれています

QuickFixウィンドウのプレビューや絞り込み

デフォルトでは:makeや他のプラグインから「QuickFixウィンドウ」を開いてもプレビューや絞り込み等は行いません。

QuickFixウィンドウでもプレ ビューや絞り込みを有効にしたい場合は以下を設定してください。

" プレビューや絞り込みをQuickFix/ロケーションリストの両方で有効化
let QFixWin_EnableMode = 1

上記の設定を有効にすると、QuickFixウィンドウを使用するmakeや他のプラグイン等でもプレビューや絞込等が有効になります。

最初はとりあえず有効にしておいて、他のプラグイン等との併用でなにか問題が起きたら無効化するのをおすすめします。

QuickFix/ロケーションリスト

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

QFixHowmのデフォルトキーマップは g,c の様に3ストロークのコマンドになっています。

QFixHowm_Key で1ストローク目のキーマップ、QFixHowm_KeyB で2ストローク目が指定可能です。

たとえばデフォルトの新規howmファイル作成コマンドは g,c のように2ストローク目が , になっていますが、 QFixHowm_KeyB='.' とすると g.cになります。

"Howmコマンドキーマップ
let QFixHowm_Key = 'g'
"Howmコマンドの2ストローク目キーマップ
let QFixHowm_KeyB = ','

またQFixHowm_KeyBを空白にして、2ストロークコマンドで使用することも出来ます。

以下の例では スペースキーを押してから c を押す事でHowmファイルの新規作成というようになります。

"QFixHowmキーマップ
let QFixHowm_Key = '<Space>'
"Howmコマンドの2ストローク目キーマップ
let QFixHowm_KeyB = ''

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

新規エントリのテンプレートは QFixHowm_Template で指定します。

(title-keycmd.vimを使用していた場合は削除してください)

"新規エントリのテンプレート
"%TAG%はQFixHowm_DefaultTagに変換されます。
let QFixHowm_Template = [
  \"= %TAG%",
  \"%DATE%",
  \""
\]

%DATE%はhowmタイムスタンプに変換されます。

デフォルトタグについてはQFixHowmが設定する事はありませんので、必要に応じて自分で設定して下さい。

例えばプライベートなマシンでは .vimrcで QFixHowm_DefaultTag = '[:private]' などと設定しておくという風に使います。

"デフォルトタグ
let QFixHowm_DefaultTag = ''

カーソル移動

テンプレート表示後のカーソル制御は QFixHowm_Cmd_NewEntryで行います。

QFixHowm_Cmd_NewEntryではノーマルモードのコマンドがそのまま使用可能で、最後が i なら i、 $a なら A コマンドと同様の動作になります。

カーソル位置は挿入されたテンプレートの最初の行から始まります。

"テンプレート表示後のカーソル移動
let QFixHowm_Cmd_NewEntry = "$a"

テンプレート表示後、2行下へ移動してインサートモードへ移行するには以下の様にします。

"テンプレート表示後のカーソル移動
let QFixHowm_Cmd_NewEntry = "2j$a"

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

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

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

なお QFixHowmでは保存時に、エントリ内にhowmスタンプがない場合はhowmタイムスタンプを付加して、タイトルがないものは本文の一行目から自動で設定するようになっています。

これを利用して新規エントリはタイトル記号のみにして、タイトルを明示的に付けたい場合はタイトルから、そうでない場合は<CR>を入力してから本文を書き始めるというようにすると便利かもしれません。

設定例

新規エントリのテンプレートをタイトル行のみにするには以下のようにします。

"新規エントリのテンプレート
let QFixHowm_Template = [
  \"= %TAG%",
  \""
\]

デフォルト設定だと howmタイムスタンプは保存時に付加されます。

またhowmタイムスタンプを作成時刻ではなく、更新時刻に変更したい場合は次の設定を.vimrcに追加してください。

ファイルを保存すると予定・TODO以外のファイル内のhowmタイムスタンプが全て更新時刻に変更されます。

let QFixHowm_SaveTime   = 1

ファイルの作成時刻はファイルネームからわかります。

ファイルの更新時間の管理の詳しい事は以下を参照して下さい。

更新時間の管理

快適な使用のために

howmタイムスタンプのフォーマット

デフォルトは[2009-09-06 00:00] の形式です。

"日付フォーマット
let QFixHowm_DatePattern = '%Y-%m-%d'

[2009/09/06 00:00] の形式にするには以下のように設定します。

let QFixHowm_DatePattern = '%Y/%m/%d'

%Y-%m-%d か %Y/%m/%d のどちらかを指定するようにしてください。

howmタイムスタンプの一括置換

%Y-%m-%d形式 から %Y/%m/%d形式への変換は、適当な一括置換ツールなどで変換して下さい。

一括置換を行うと大抵の場合、ファイルの更新時間も全て更新されますので、必要ならタイムスタンプ変更ツールなどを使用して下さい。

次のようにするとファイルの更新時間を維持する事が出来ます。

  1. ファイルの作成時間を更新時間に変更
  2. howmタイムスタンプを一括置換
  3. ファイルの更新時間を作成時間に変更

エントリの自動整形

デフォルトでエントリの自動整形が有効になっています。

自動整形は以下の処理を行います。

  • ファイル先頭と末尾の空行を削除します。
    • エントリファイルが空行のみの場合はファイルが削除されます。
  • ファイル先頭にタイトル行がない場合は、挿入します。
    • ただし予定・TODOと空行しかないファイルには、タイトルの挿入を行いません。
  • ファイル先頭行の正規化されていないタイトルは正規化します。
    • またその他の行でも行頭に タイトル記号がある行は全てタイトルとみなして正規化します。
    • ファイル先頭行以外のタイトル正規化を無効にしたい場合は QFixHowm_Autoformat_TitleMode = 0 に設定してください。
  • タイムスタンプのないエントリには保存時にタイムスタンプを付加します。
    • 自動で付加されたくない場合はQFixHowm_SaveTime = -1を設定します。

自動整形のオプション

"エントリを自動整形する
"2に設定すると、一ファイル複数エントリのエントリ間の空白行も削除する
let QFixHowm_Autoformat = 1
"行頭にQFixHowm_Titleがある行は全てタイトルとみなして自動整形する
let QFixHowm_Autoformat_TitleMode = 1
"タイムスタンプを自動で付加しない
let QFixHowm_SaveTime = -1

全ての整形処理を無効にしたい場合は、QFixHowm_Autoformat = 0 に設定してください。

カーソル位置のURIをブラウザや外部プログラムで開く

メモ中に URIやファイル名が書かれていたら、ブラウザで開く事が出来ます。

http://example.com
C:\Temp\hoge.txt
D:/Temp/fuga.jpg
~/tmp/puyo.gif

Vim で開く拡張子は QFixHowm_OpenVimExtReg で指定できます。

" Vimで開くファイルの正規表現指定 let QFixHowm_OpenVimExtReg = '\.\(txt\|mkd\|wiki\|rd\|vim\|js\|java\|py\|rb\|h\|c\|cpp\|ini\|conf\)$'

設定にかかわらずVimで開きたいファイルは [ と :vim]でくくって指定することが可能です。

設定にかかわらずVimで開きたいファイル指定

普通の文章内のURLやファイル名も自動的にリンク化されて、同様に開く事が出来ますが空白を含むパスなどは扱えません。

普通の文章内にある場合は、空白がURIの区切りとして扱われます。

空白や日本語を含むパスやUNCパスを扱う場合には [ と :] でくくるか gotoリンクを使用します。

[~/tmp/ほ げ.jpg:]
[c:\tmp\ほ げ.jpg:]

相対パス

  [./ho ge.txt:]
  [../fuga/puyo.txt:] 

UNCパス

gotoリンク

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

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

ブラウザ指定

テキストリンクを開く機能は openuri.vimとして単体動作可能なプラグインで実装されています。

単体プラグインとしてのドキュメントは doc/openuri.jaxにあります。

ブラウザ呼び出しにはnetrwを使用する方法とコマンドを直接指定する方法の2種類あります

ブラウザ起動指定

テキストリンクをを開くブラウザ指定を独自に行うことも可能です。

またOSで設定している標準ブラウザと異なるブラウザを呼び出したい場合などにも使用出来ます。

" Vimで開くファイルの正規表現指定
let QFixHowm_OpenVimExtReg = '\.\(txt\|mkd\|wiki\|rd\|vim\|js\|java\|py\|rb\|h\|c\|cpp\|ini\|conf\)$' 
" URIを開くブラウザ指定 if has('unix')   let QFixHowm_OpenURIcmd = "call system('firefox %s &')" else   " Windows(Internet Explorer)
  let QFixHowm_OpenURIcmd = '!start "C:/Program Files/Internet Explorer/iexplore.exe" %s'
endif

特定の拡張子だけユーザ指定のプログラムで開く事も出来ます。

たとえば pdfファイルを外部プログラム指定で開きたい場合は QFixHowm_Opencmd_pdf のように QFixHowm_Opencmd_ の後に拡張子を付加した環境オプションを設定します。

"拡張子別の起動プログラムをユーザ指定する
"pdfの指定
if has('win32')
  "Windowsは Acrobat Reader で開く
  let QFixHowm_Opencmd_pdf = '!start "C:/Program Files/Adobe/Reader 10.0/Reader/AcroRd32.exe" %s'
elseif has('unix')
  "Linux(Ubuntu)は evince で開く
  let QFixHowm_Opencmd_pdf = "call system('evince %s &')"
endif

Google Chrome(Windows)

WindowsでChromeを使用する場合は cmd /c を使用しないとうまく起動できないことがあります。

将来的にChromeのバージョンアップで動作するようになった場合は cmd /c を削除してください。

" Chromeはcmd /c で開く
if has('win32')
  " Chrome で開く
  let QFixHowm_OpenURIcmd = '!start cmd /c'.$USERPROFILE.'"\Local Settings\Application Data\Google\Chrome\Application\chrome.exe" %s'
endif

netrwとrundll32.exe

Windowsのデフォルトではrundll32.exeを使用します。

" URIを開くブラウザ指定(Windows)
let QFixHowm_OpenURIcmd = '!start "rundll32.exe" url.dll,FileProtocolHandler %s'

netrwの設定に従って各OS標準のハンドラで拡張子ごとに適したアプリを呼び出すことも可能ですが、OSやバージョンによって動作が異なることがあります。

" Vimで開くファイルの正規表現指定
let QFixHowm_OpenVimExtReg = '\.\(txt\|mkd\|wiki\|rd\|vim\|js\|java\|py\|rb\|h\|c\|cpp\|ini\|conf\)$' 
" QuickFixウィンドウコマンド let QFixHowm_OpenURIcmd = 'netrw'

netrwについては :help gx を参照してください。

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

vim/gvimに文字コードの自動判定が設定されていなくても動作するように howmファイルには強制的にhowm_fileencodingを設定しています。

howm_fileencoding と異なるファイルエンコーディングのhowmファイルを読み込んだ場合は QFixHowm_ForceEncodingに応じて以下の処理が行われます。

デフォルトは 1 です。

"howmファイル読込の際、howm_fileencodingに強制設定する
let QFixHowm_ForceEncoding = 1

外部grepでは異なる文字エンコーディングのファイルは検索できないので、howm_dir内のファイルの文字エンコードは、howm_fileencodingに統一して、QFixHowm_ForceEncoding=0 は基本的に設定しないで使用してください。

howm_fileencodingを強制しない場合は vimで文字化けするファイルはQFixHowmでも文字化けします。

特に一行だけの思いつきメモを良く作成するような場合、使用している日本語文字種が少ないため文字化けすることがあります。

vimの文字化けについて

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

ファイルエンコーディングに応じて複数の howm_dir を使用する事も可能ですが、いずれにしても文字エンコーディングの混在はおすすめしません。

複数のhowm_dirを使用する

検索時にカーソル位置の単語を拾う/拾わない

g,e 等の検索を行う場合、自動でカーソル位置の単語を拾います。

不要な場合は<C-u>や<C-w>で削除してやる事が出来ますが、デフォルトでこれをオフにする事も出来ます。

"QFixGrepの検索時にカーソル位置の単語を拾う/拾わない
let MyGrep_DefaultSearchWord = 1
"QFixHowmの検索時にカーソル位置の単語を拾う/拾わない
let QFixHowm_DefaultSearchWord = 1

howm ファイルをウィンドウ分割を基本にして開く

howmファイルをウィンドウ分割を基本にして開く事が出来ます。

howmファイルやクイックメモをキーマップから開く場合が対象で、Quickfixウィンドウから開く場合には影響しません。

"ウィンドウ分割を基本にしてhowmファイルを開く
let QFixHowm_SplitMode = 1

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

基準ディレクトリを使用してローカルファイルにリンクを張る」へ移動しました。

howm専用MRUを使用する

MRUリスト」へ移動しました。

アウトラインモード

アウトラインモード」へ移動しました。

サブメニュー(サイドバー)

メニューとカレンダー」へ移動しました

howmを一日一ファイルで使用する

一ファイル複数エントリで使用する」へ移動しました。

howmの色とファイルタイプ指定

メモの強調(色分け)表示」へ移動しました。