:call cursor(0, len(getline('.'))/2)
Eu sei que 0 vai para o começo da linha e $ vai para o final, mas existe algo para o meio?
Aqui está uma solução que também respeitará os hardtabs e os caracteres com vários bytes.
:exe 'normal '.(virtcol('$')/2).'|'
Digitar gm
faria isso, mas ele se move por linhas de tela. Para trabalhar com linhas de texto, pode-se remapear este comando:
map gm :call cursor(0, virtcol('$')/2)<CR>
Aqui é a melhor solução que encontrei. Saltando exatamente para o meio da linha não é muito prático. Você provavelmente ainda precisará mover o cursor algumas posições depois de se mover para o meio. E se você pudesse pular para um personagem específico? Muitas pessoas apenas procuram pelo personagem, depois acertam "próximo" até que o alcancem. Isso é lento. O plugin Easy-motion oferece uma solução melhor.
Meu favorito é <leader><leader>s
, em seguida, o caractere 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 de mudança de vida ...
Tags vim