Respuestas:
:call cursor(0, len(getline('.'))/2)
Escribir gmlo haría, pero se mueve por líneas de pantalla (ver :help gm). Para que funcione con líneas de texto, se puede reasignar este comando:
map gm :call cursor(0, virtcol('$')/2)<CR>
Aquí hay una solución que respetará las fichas duras y los caracteres de varios bytes también.
:exe 'normal '.(virtcol('$')/2).'|'
Aquí está la mejor solución que he encontrado. Saltar exactamente al medio de la línea no es muy práctico. Lo más probable es que aún necesites mover el cursor algunas posiciones después de moverte hacia el centro. ¿Qué pasaría si pudieras saltar a un personaje específico? Muchas personas simplemente buscan el personaje, luego presionan "siguiente" hasta que lo alcanzan. Esto es lento El complemento Easy-motion ofrece una mejor solución.
Mi favorito es <leader><leader>sel personaje al que quieres saltar. Easy Motion reemplaza todas las coincidencias con diferentes letras para que pueda elegir. Mira el tutorial. Es un complemento que cambia la vida ...