O que o botão Home realmente deveria ser

Ao codificar, gosto de pressionar o homebotão para ir para o primeiro caractere não em branco, então se eu pressionar novamente o cursor vai para o início da linha.

Aqui está uma pequena função vim para adicionar esta funcionalidade:

function! SuperHome()
if (strpart(getline('.'), 0, col('.') - 1)=~'^W*$')
norm
! 0
else
norm
! ^
endif

endfunction


nnoremap
<silent> <Home> :call SuperHome()<CR>
inoremap
<silent> <Home> <ESC>:call SuperHome()<CR>i
vnoremap
<Home> omro<ESC>:call SuperHome()<CR>v`ro

Infelizmente para o modo visual, preciso usar 1 marcador ( r). que pode substituir o marcador definido anteriormente.

Aproveite a dica; p

EDITAR: Aqui está um “mini-plugin” atualizado que inclui esta dica: https://bitbucket.org/larchange/supernormal