Vim を暗記帳として使う

最近、暗記をしなければならないことが増えた。いつも文字を書くときには Vim + Markdown を使っているので、それがそのまま暗記帳となれば楽である。 要は Markdown強調 されているところが、コマンドやカーソルオーバーによって隠れたり現れたりすれば嬉しいわけである。 先人 がいるので、そのアイデアを参考にする。

markdown.vim によって、italic, bold, bolditalic にはそれぞれ htmlItalic, htmlBold, htmlBoldItalic という syntax が適用されているので、それらが使う highlight を別のものにトグルするコードを書いてやればよい。具体的には以下のようにすれば :Anki コマンドで重要語句のハイライトと白塗りとを切り替えることができる。

function! s:setMarkdownColor()
  hi link htmlItalic LineNr
  hi link htmlBold WarningMsg
  hi link htmlBoldItalic ErrorMsg
endfunction
call s:setMarkdownColor()

" Toggle strong/italic <-> hidden text, in order to memorise them.
" Use autocmd to set color after colorscheme is loaded (otherwise highlight can be cleared by other scripts).
autocmd ColorScheme * highlight HiddenText ctermfg=15 ctermbg=15 guifg=White guibg=White
command Anki call s:toggleHide()
function! s:toggleHide()
  if exists('b:synhideText')==0
    " hide
    hi link htmlItalic HiddenText
    hi link htmlBold HiddenText
    hi link htmlBoldItalic HiddenText
    let b:synhideText=1
  else
    " Unhide
    call s:setMarkdownColor()
    unlet b:synhideText
  endif
endfunction

ちなみに、現在の colorscheme を確認するには次の4つの方法がある(参考サイト)。これらの出力を見ながら好きな色を決めていけばよい。

colorscheme  " カラースキーム名のみ
so $VIMRUNTIME/syntax/hitest.vim  " ハイライト例を表示
highlight  " カラーコードつき
verbose highlight  " カラーコード+定義ファイル名つき

ついでに、現在のカーソルの下の syntax を確認するには次のようにする(参考サイト)。

:echo synIDattr(synID(line('.'), col('.'), 0), 'name')