最近、暗記をしなければならないことが増えた。いつも文字を書くときには 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')