QFixHowm - MarkdownとVimWiki


QFixHowmのバッファとして howmではなく Markdownや VimWikiなど任意のファイルタイプを使用することが出来ます。
howmではなく他のファイルタイプを使用する場合でも howmスタイルの予定・TODO、全文検索、エントリ一覧表示や ランダム表示を使用可能です。
個人的に Wiki(VimWiki)は適当に一行メモを書き込む様な使い方にはあまり向いていないように感じるので、その辺りの補完的に使用するのがよいかと思います。

カーソル位置に QFixHowmの予定・TODOがある場合 <CR>を押すと繰り返し予定のアクションロックが実行されますが、予定・TODO以外の場所ではデフォルトの動作を行います。



シンタックスハイライト(色分け表示)を変更する

メモの書式にMarkdownやVimWikiのシンタックスハイライトを適用したいだけの場合はファイルタイプを指定してください。
メモ用としては殆どの場合ファイルタイプを設定するだけで間に合うようです。
シンタックスハイライト

また任意のファイル形式を外部コマンドを利用してHTML変換することも可能なので、HTML表示が必要な場合は設定してみてください。
HTML変換

howmメモファイルを他のプラグインやネットサービスで直接使用する場合などに、タイトル記号も含めて完全な別形式が必要な場合は以下を参照してください。

Ver.3を使用している場合

以下に例としてQFixHowmのデフォルトバッファにMarkdownを使う設定を示します。
行頭が # 一つで始まるとタイトル行とみなすなら、以下の設定でデフォルトバッファを Markdownとして使用可能です。
" ファイル拡張子をmkdにする
let howm_filename = '%Y/%m/%Y-%m-%d-%H%M%S.mkd'
" ファイルタイプをmarkdownにする
let QFixHowm_FileType = 'markdown'

" タイトル記号
let QFixHowm_Title = '#'
拡張子については .txtでもかまいません。


拡張子が org でファイルタイプが org、タイトル記号が . なら以下のように設定します。
" ファイル拡張子をorgにする
let howm_filename = '%Y/%m/%Y-%m-%d-%H%M%S.org'
" ファイルタイプをorgにする
let QFixHowm_FileType = 'org'

" タイトル記号
let QFixHowm_Title = '.'
拡張子については .txtでもかまいません。

タイムスタンプ等の自動整形

タイムスタンプ等の自動整形が問題になる場合は以下を参照して無効化してください。
エントリの自動整形

テンプレート

独自にテンプレートが必要な場合はQFixHowm_Template_mkdのように最後に拡張子を付加したテンプレートを作成してください。
"mkd新規エントリのテンプレート
"%TAG%はQFixHowm_DefaultTagに変換されます。
let QFixHowm_Template_mkd = [
  \"%TITLE% %TAG%",

  \""
\]

"mkdテンプレート(カーソル移動)
let QFixHowm_Cmd_NewEntry_mkd = '$a'


タイトル行検索の正規表現

MRUリスト」や「エントリ一覧表示」に使う正規表現はQFixMRU_Titleから取得するのでタイトル行の形式を変更した場合、検索用正規表現の設定が必要になることがあります。
検索用正規表現の指定はかならず拡張子に対して行います。

設定例としてファイルの拡張子を mkdとしてファイルタイプmarkdownのバッファを使用したときに、 # 見出し ではなく ### 見出し をタイトル行として検索する場合は以下のようになります。
" タイトル行検索正規表現の辞書を初期化
let QFixMRU_Title = {}
" MRUでタイトル行とみなす正規表現(Vimの正規表現で指定)
let QFixMRU_Title['mkd'] = '^###[^#]'
" grepでタイトル行とみなす正規表現(使用するgrepによっては変更する必要があります)
let QFixMRU_Title['mkd_regxp'] = '^###[^#]'
辞書の初期化は設定ファイル内で一度だけにしてください。

なお検索用正規表現は自動設定で問題なければ設定しなくてもかまいません。
(タイトル記号が一文字または同じ記号が続く形式なら自動設定で問題ないようです)


VimWiki (Ver.3)

vimでWikiもどきではなく、Wikiそのものをサポートするプラグインに VimWikiがあります。
http://www.vim.org/scripts/script.php?script_id=2226

QFixHowmは雑多なメモ取りを目的としていて、文書構造については出来るだけユーザが自由に設定できる様になっていますが、Wikiスタイルの構造を持つ文書作成を行いたい場合などはVimWikiと併用すると便利かもしれません。

VimWikiを QFixHowmのバッファとして使用する場合は以下のようにします。
  1. qfixapp/syntaxの howm_schedule.vimをコピーして vimwiki.vimへリネームします。
    これで wikiバッファでも 予定・TODOがシンタックス(色分け)表示されるようになります。
  2. .vimrcに設定を追加します。
    VimWikiの設定はデフォルトのままで何も設定する必要はありません。
    パス等は環境に合わせて変更してください。
""""""""""""""""""""""""""""""
" QFixHowm + vimwiki
""""""""""""""""""""""""""""""
let howm_dir = 'D:/usr/howm/vimwiki'
let howm_filename            = '%Y/%m/%Y-%m-%d-%H%M%S.wiki'
let howm_fileencoding   = 'utf-8'
let howm_fileformat       = 'dos'


let
QFixHowm_FileType = 'vimwiki'
let QFixHowm_Title           = '='

" VimWikiの設定
set
 runtimepath+=path/to/vimwiki
let vimwiki_dir = howm_dir
let vimwiki_htmldir = 'D:/usr/public_html'
let vimwiki_list    = [{'path':vimwiki_dir, 'path_html': vimwiki_htmldir}]


タイムスタンプ等の自動整形

タイムスタンプ等の自動整形が問題になる場合は以下を参照して無効化してください。
エントリの自動整形

テンプレート


拡張子が wikiの場合デフォルトではテンプレートを挿入しませんが、QFixHowm_Template_wiki としてテンプレートを作成していると新規ファイルで挿入されます。
"wiki新規エントリのテンプレート
let QFixHowm_Template_wiki = [
  \"%TITLE% %TITLE%",

  \""
\]

"wikiテンプレート(カーソル移動)
let QFixHowm_Cmd_NewEntry_wiki = 'f a'

タイトルの見出しレベル変更

= 見出し = ではなく === 見出し === をタイトル行として検索するには以下のようにします。

" タイトル記号
let QFixHowm_Title = '==='

" タイトル行とみなす正規表現
function! QFixMRUAddEntryRegxp()
  let g:QFixMRU_Title['wiki'] = '^==='
endfunction
"wiki新規エントリのテンプレート
let QFixHowm_Template_wiki = [
  \"%TITLE% %TITLE%",

  \""
\]

"wikiテンプレート(カーソル移動)
let QFixHowm_Cmd_NewEntry_wiki = 'f a'

トップページ

好みでトップページ表示用のコマンドをマップしてもいいかもしれません。
" VimWikiのトップページ
nnoremap <silent> g,I :VimwikiIndex<CR>
標準なら \ww で表示します。

特定の howm_dirで Markdown/VimWikiを使用する

複数の howm_dirを切り替えて使用する場合、特定の howm_dirのみ markdownや VimWikiを使用する事が出来ます。
基準ディレクトリと複数の howm_dir
howm-chenv.vim
howm-chenv.vimを使用する場合はディレクトリ名が -mkdで終わっていれば markdownバッファに、 vimwikiで終わっていれば VimWikiバッファになります。

"howmディレクトリの切替
"markdown
nnoremap <silent> g,hd :call HowmChEnv('user-mkd', 'time', '#')<CR>

"VimWiki
nnoremap <silent> g,hv :call HowmChEnv('vimwiki',  'time', '=')<CR>


howm-chenv.vimを使用しないで独自に設定を切り替える場合は、最後に QFixHowmSetup()を実行してください。
" デフォルトのhowmバッファを使用する場合は1
let QFixHowm_HowmMode = 1

let
howm_dir = 'D:/usr/howm'
...

" 設定関数呼び出し
silentcall QFixHomwSetup()
切替使用する場合は howm-chenv.vimを改変しても良いかもしれません。

Comments