vimでTodoリスト
今までいろんなTodo管理アプリを試してきたけど、「GUIアプリほど高機能はいらない」「ターミナル上でtodoを確認したい」という理由でvimでTodoリストを書くようになった。これによるとGithubがGithub Flavored MarkdownにTodoリスト記法を実装したようなので、これに倣ってmarkdownでTodoリストを書くことにした。
todoコマンド
まず、Todoリストを開くコマンドをaliasで定義してみた。これでtodo
でTodoリストを確認できる。さらに、Dropbox上にファイルを置けば複数PCで共有できるので、オフィスのPCとプライベートPCでTodoリストを共用できる。
# .zshrc
if [-e "$HOME/Dropbox"]; then
alias todo="$EDITOR $HOME/Dropbox/.todo.md"
else
alias todo="$EDITOR $HOME/.todo.md"
end
vimでmarkdownを書く準備
次に、vimでmarkdownを書く準備をする。普通に*.mdを開くとmodula2というfiletypeで認識されてしまい、markdownファイルとして見なされないので、便利プラグインをインストールする。
" .vimrc
NeoBundle 'tpope/vim-markdown'
折り返しを有効にする
これだけでも十分なんだけど、より使いやすくするための設定を自分なりに考えてみた。まず、一行が長くなるとリストとしては見づらいので、普段は折り返さないけどmarkdownのときだけ折り返すようにしてみた。
" .vim/ftplugin/markdown.vim
" 折り返しを有効にする
set wrap
" 80文字で折り返す
set textwidth=80
" マルチバイト文字の場合も折り返しを有効にする
set formatoptions+=m
Todoリストを簡単に書く
上でふれたGithubが実装したTodoリスト記法- []
, - [x]
を簡単に入力するための設定も書いた。abbreviateを使うと略記を登録することができる。下の設定ではtl<space>
と入力すると- []
と自動的に変換される。さらに、Todoリストのある行の上で<Leader>
を2回おすと(僕は<Leader>
を<space>
にしてる)、チェックをon/off切り替えられる。
" .vim/ftplugin/markdown.vim
" todoリストを簡単に入力する
abbreviate tl - []
" todoリストのon/offを切り替える
nnoremap <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]', '')
call setline('.', l:result)
elseif l:line =~ '^\-\s\[x\]'
let l:result = substitute(l:line, '^-\s\[x\]', '- []', '')
call setline('.', l:result)
end
endfunction
スクリーンショット
普段は下のようにtmuxで画面を分割して小さいウィンドウ(右上)にTodoリストを表示しながら開発している。