Respostas:
:call cursor(0, len(getline('.'))/2)
A digitação gm
faria isso, mas se moveria pelas linhas da tela (consulte :help gm
). Para fazê-lo funcionar com linhas de texto, pode-se remapear este comando:
map gm :call cursor(0, virtcol('$')/2)<CR>
Aqui está uma solução que respeitará os hardtabs e os caracteres de vários bytes.
:exe 'normal '.(virtcol('$')/2).'|'
Aqui está a melhor solução que eu encontrei. Saltar exatamente para o meio da linha não é muito prático. Você provavelmente ainda precisará mover o cursor algumas posições depois de passar para o meio. E se você pudesse pular para um personagem específico? Muitas pessoas apenas pesquisam o personagem e depois clicam em "próximo" até alcançá-lo. Isso é lento. O plugin Easy-motion oferece uma solução melhor.
Meu favorito é <leader><leader>s
o personagem para o qual você deseja pular. O Easy Motion substitui todas as correspondências por letras diferentes para você escolher. Veja o tutorial. É um plugin para mudar a vida ...