vim のインサートモードで行頭をトグルする

vim を使ってて、emacs みたいに C-a で行頭と空白以外の最初の文字を トグルしたかったので作ってみました。

function! ToggleBol()
    let col = virtcol('.')
    let cmd = (col == 1) ? '^' : '0'
    execute "normal! " . cmd
endfunction
inoremap <C-a> <C-o>:call ToggleBol()<CR>

コメントアウトする時とかに便利かも。

追記

Qiitaのコメント で教えてもらったやり方のがよさそうなので、こっちにも書いときます。

inoremap <expr> <C-a>
      \ search('^\s\s*\%#', 'bcn') ? "\<C-o>0" : "\<C-o>^"

search とか初めて知ったよ。