vimでmarkdown書ける前提で、以下のような設定を書くと- [ ]
のようなtodoリスト記法をラクに書いたり、Leader(僕の場合はSpace)でオン・オフを切り替えられるようになる。
.vim/ftplugin/markdown.vim
" todoリストを簡単に入力する
abbreviate tl- [ ]
" 入れ子のリストを折りたたむsetlocalfoldmethod=indent
" 折り返された行にもjkで移動するnnoremap<buffer>j gj
nnoremap<buffer>k gk
" todoリストのon/offを切り替えるnnoremap<buffer><Leader><Leader> :call ToggleCheckbox()<CR>vnoremap<buffer><Leader><Leader> :call ToggleCheckbox()<CR>" 選択行のチェックボックスを切り替えるfunction! ToggleCheckbox()letl:line = getline('.')ifl:line =~'\-\s\[\s\]'letl:result = substitute(l:line,'-\s\[\s\]','- [x]','')call setline('.',l:result)elseifl:line =~'\-\s\[x\]'letl:result = substitute(l:line,'-\s\[x\]','- [ ]','')call setline('.',l:result)endendfunction