salir por editar cómo consola con comandos borrar archivo vim scroll cursor-position

por - ¿Cómo mover la pantalla sin mover el cursor en Vim?



salir de vi linux (10)

A veces es útil desplazar el texto con las teclas K y J. Así que tengo esta función de "modo de desplazamiento" en mi .vimrc (también enlazado en zs)

scroll_mode.vim

Recientemente descubrí los atajos Ctrl + E y Ctrl + Y para Vim que mueven respectivamente la pantalla hacia arriba y hacia abajo con un solo paso, sin mover el cursor .

¿Conoces algún comando que deje el cursor donde está pero mueve la pantalla para que la línea que tiene el cursor se convierta en la primera línea? (tener un comando para la última línea sería una buena ventaja).

Puedo lograr esto presionando manualmente Ctrl + E (o Ctrl + Y ) el número correcto de veces, pero tener un comando que de alguna manera lo haga directamente sería bueno.

¿Algunas ideas?


Adicionalmente:

  • Ctrl - y Mueve la pantalla hacia arriba una línea
  • Ctrl - e Mueve la pantalla hacia abajo una línea
  • Ctrl - u Mueve el cursor y la pantalla hacia arriba ½ página
  • Ctrl - d Mueve el cursor y la pantalla hacia abajo ½ página
  • Ctrl - b Mueve la pantalla hacia arriba una página, el cursor a la última línea
  • Ctrl - f Mueve la pantalla hacia abajo una página, el cursor a la primera línea

Ctrl - y y Ctrl - e solo cambian la posición del cursor si se mueve fuera de la pantalla.

Cortesía de http://www.lagmonster.org/docs/vi2.html


Aquí está mi solución en vimrc:

nnoremap k kzz nnoremap j jzz nnoremap p pzz nnoremap P Pzz nnoremap G Gzz nnoremap x xzz inoremap <ESC> <ESC>zz nnoremap <ENTER> <ENTER>zz inoremap <ENTER> <ENTER><ESC>zza nnoremap o o<ESC>zza nnoremap O O<ESC>zza nnoremap a a<ESC>zza

De modo que el cursor se mantendrá en el centro de la pantalla, y la pantalla se moverá hacia arriba o hacia abajo.


Hay un nuevo complemento que escribí, que te permite navegar por el archivo del agujero sin mover la posición del cursor. Se basa en doblar las líneas entre su posición y su posición objetivo y luego saltar sobre el pliegue. O abórtalo y no te muevas en absoluto.

También es fácil cambiar rápidamente entre los cursores es la primera línea, el cursor es la última línea y el cursor está en el medio con solo hacer clic en j, k o l (cuando está en el modo del complemento).

Supongo que sería una buena opción aquí: https://github.com/anschnapp/move-less


Para dejar el cursor en la misma columna cuando usa Ctrl + D , Ctrl + F , Ctrl + B , Ctrl + U , G , H , M , L , g g

Debes definir la siguiente opción:

:set nostartofline



Puede prefijar los comandos de movimiento del cursor con un número y eso repetirá ese comando muchas veces.

1 0 Ctrl + E hará Ctrl + E 10 veces en lugar de una.


Vim requiere que el cursor esté en la pantalla actual en todo momento, sin embargo, puede marcar la posición actual para desplazarse y regresar a donde estaba.

mg # This book marks the current position as g (this can be any letter) <scroll around> `g # return to g


z Enter hace exactamente lo que esta pregunta pide.

Funciona donde, extrañamente, z z no funcionaría (vim 7.4.1689 en Ubuntu 2016.04 LTS sin .vimrc especial)


  • z z - mueve la línea actual al centro de la pantalla
    ( Tenga cuidado con z z , si tiene Caps Lock activado accidentalmente, guardará y saldrá de vim !)
  • z t - mueve la línea actual a la parte superior de la pantalla
  • z b : mueve la línea actual a la parte inferior de la pantalla