Quantcast
Channel: すぱぶろ
Viewing all articles
Browse latest Browse all 30

Vim で ToDo リストを書くための Tips (改)

$
0
0

Vimで ToDo リストを書きやすくするために vimでtodoリストを書くためのtips - Qiitaを使わせてもらっていたのですが、もう少しなんとかしたいと思い、少し書き換えてみました。べんり。

変更前

変更後

  1. 完了した際に自動的に時刻を挿入する
    タスクが完了した際に時刻を行末に自動的に挿入するようにしました。未完了に戻したときは時刻を削除するようにもなっています。
  2. 未完了時は「赤」、完了時は「緑」にハイライトを設定
    視認性向上のために。
  3. foldmethod を変更
    インデントでの折りたたみでは子だけが折りたたまれていました。期待では親から折りたたんでほしかったのでそのように変更しています。
  4. foldtext を変更
    デフォルトの foldtext ではチェックボックスの表示が折りたたまれていない上下のタスクとズレるため変更しています。

フォーク元と同じく ~/.vim/ftplugin/markdown.vimとして保存して使ってください。他のファイルタイプで使いたければ必要に応じて変更してください。

" forked from http://qiita.com/naoty_k/items/56eddc9b76fe630f9be7" todoリストを簡単に入力するabbreviate tl - [ ]

" 入れ子のリストを折りたたむsetlocalfoldmethod=expr foldexpr=MkdCheckboxFold(v:lnum) foldtext=MkdCheckboxFoldText()
function! MkdCheckboxFold(lnum)let line =getline(a:lnum)let next =getline(a:lnum+1)if MkdIsNoIndentCheckboxLine(line)&& MkdHasIndentLine(next)return1elseif(MkdIsNoIndentCheckboxLine(next)|| next =~'^$')&& !MkdHasIndentLine(next)return'<1'endifreturn'='endfunctionfunction! MkdIsNoIndentCheckboxLine(line)returna:line=~'^- \[[ x]\] 'endfunctionfunction! MkdHasIndentLine(line)returna:line=~'^[[:blank:]]\+'endfunctionfunction! MkdCheckboxFoldText()returngetline(v:foldstart).' ('.(v:foldend - v:foldstart).' lines) 'endfunction" todoリストのon/offを切り替えるnnoremap<buffer><Leader><Leader> :call ToggleCheckbox()<CR>vnoremap<buffer><Leader><Leader> :call ToggleCheckbox()<CR>" 選択行のチェックボックスを切り替えるfunction! ToggleCheckbox()let l:line =getline('.')if l:line =~'\-\s\[\s\]'" 完了時刻を挿入するlet l:result =substitute(l:line, '-\s\[\s\]', '- [x]', '').' ['.strftime("%Y/%m/%d (%a) %H:%M").']'callsetline('.', l:result)elseif l:line =~'\-\s\[x\]'let l:result =substitute(substitute(l:line, '-\s\[x\]', '- [ ]', ''), '\s\[\d\{4}.\+]$', '', '')callsetline('.', l:result)endendfunctionsynmatch MkdCheckboxMark /-\s\[x\]\s.\+/displaycontainedin=ALLhi MkdCheckboxMark ctermfg=green
synmatch MkdCheckboxUnmark /-\s\[\s\]\s.\+/displaycontainedin=ALLhi MkdCheckboxUnmark ctermfg=red

Viewing all articles
Browse latest Browse all 30

Trending Articles