Recientemente descubrí los accesos directos Ctrl+ Ey Ctrl+ Ypara Vim que respectivamente mueven la pantalla hacia arriba y hacia abajo con un paso de una línea, 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) la cantidad adecuada de veces, pero tener un comando que de alguna manera lo haga directamente sería bueno.
¿Algunas ideas?
vim
scroll
cursor-position
ereOn
fuente
fuente
Respuestas:
(¡ Cuidado conzz , si tiene Caps Lockaccidentalmente, guardará y saldrá
vim
!)fuente
xdotool
otriggerhappy
. Finalmente, muestre el estado de bloqueo de mayúsculas (no se puede hacer en Vimscript) ...xev -q
,cat /proc/bus/input/devices
para encontrar el dispositivo de consulta yevtest
othd ... --dump /dev/input/event<#>
para comprobar el estado, etc. Si es absolutamente necesario hacer una reasignación de todo el sistema, al menos dos cerraduras de intercambio como gorras <-> num - pero el problema es más olvidar que está activado, porque si lo deseabas antes, seguirás usándolo, en cualquier mapa. Riesgo de romper Vim antes de archivos / usuario / sistema.confirm()
. Además, en lugar de asignar el bloqueo de mayúsculas a Ctrl, puede asignarlo a una tecla o combinación entendida pero no asignada por Vim, y luego emular el bloqueo de mayúsculas exclusivamente en el modo de inserción / reemplazo, a mano o por algo como github.com/tpope/ vim-capslock . Probablemente no lo necesite fuera de Vim, pero si lo hace, escriba una secuencia de comandos xmodmap para revertir sus cambios, o vea si el programa admite asignaciones propias (y tome notas).Adicionalmente:
Ctrl- yy Ctrl-e solo cambian la posición del cursor si se movería fuera de la pantalla.
Cortesía de http://www.lagmonster.org/docs/vi2.html
fuente
:help CTRL-E
diceMnemonic: Extra lines.
Vim requiere que el cursor esté en la pantalla actual en todo momento, sin embargo, puede marcar la posición actual desplazarse y luego regresar a donde estaba.
fuente
Ctrl-O
para otro realmente genial, y "retroceso, punto" lo regresa a donde estaba editando por última vez.mg
, desplácese, goto marque con'g
y ya está. Ahora puede invocar la tecla configurable para dar la vuelta y sentirá que el cursor nunca abandonó la posición actual. ¡Voilá!Aquí está mi solución en vimrc:
Para que el cursor permanezca en el medio de la pantalla y la pantalla se mueva hacia arriba o hacia abajo.
fuente
Para dejar el cursor en la misma columna cuando se utiliza Ctrl+ D, Ctrl+ F, Ctrl+ B, Ctrl+ U, G, H, M, L,gg
debe definir la siguiente opción:
fuente
Me sorprende que nadie esté usando la
Scrolloff
opción que mantiene el cursor en el medio de la página. Pruébalo con:Es el primer método recomendado en el wiki de Vim y funciona bien.
fuente
:set scrolloff=4
requerirá que el cursor esté siempre al menos a 4 líneas de distancia de la parte superior o inferior de la ventana, por lo que siempre tendrá al menos un poco de contexto.He usado estos atajos en el pasado ( nota: pulsaciones de teclas separadas, es decir, toque z , suelte, toque la tecla siguiente):
z enter -> mueve la línea actual a la parte superior de la pantalla
z . -> mueve la línea actual al centro de la pantalla
z - -> mueve la línea actual al fondo
Si no es obvio:
entersignifica la tecla Returno Enter.
.significa la tecla DOT o "punto final" (
.
).-significa la tecla HYPHEN (
-
)Por lo que vale, z.evita el peligro de guardar y cerrar Vi al escribir accidentalmente ZZsi el bloqueo de mayúsculas está activado.
fuente
Puede prefijar sus comandos de movimiento del cursor con un número y eso repetirá ese comando muchas veces
10Ctrl+ Ehará Ctrl+ E10 veces en lugar de uno.
fuente
zEnter hace exactamente lo que pide esta pregunta.
Funciona donde extrañamente zzno funcionaría (vim 7.4.1689 en Ubuntu 2016.04 LTS sin .vimrc especial)
fuente
Puede encontrar respuestas a " Desplazamiento de Vim en relación con el cursor, mapeo personalizado " útil.
Puedes usar
ScrollToPercent(0)
esa pregunta para hacer esto.fuente
A veces es útil desplazar el texto con las teclas Ky J, por lo que tengo esta función de "modo de desplazamiento" en mi .vimrc (también vinculada azs ).
Ver scroll_mode.vim .
fuente
mi mnemotécnica para desplazarse ...
Agregar a otras respuestas también presta atención a ,
ze
yzs
significa: mover la pantalla a la izquierda / derecha del cursor (sin mover el cursor)También mire la posición de
h
yl
yt
yb
y (con el teclado qwertz)c-e
yc-y
(también la "y" de alguna manera apunta a la parte inferior) en el teclado para recordar dónde se mueve la pantalla.fuente
Escribí un complemento que me permite navegar por el archivo sin mover la posición del cursor. Se basa en doblar las líneas entre su posición y su posición de destino y luego saltar sobre el doblez, o abortarlo y no moverse en absoluto.
Es también fácil de rápido cambio entre el cursor en la primera línea, la última línea y el cursor en el medio con sólo hacer clic j, kol cuando se está en el modo de plugin.
Supongo que sería un buen ajuste aquí.
fuente
Ingrese vim y escriba:
:help z
zes el comando vim para redibujar, por lo que redibujará el archivo en relación con la posición del cursor. Las opciones que tiene son las siguientes:
z+- Redibuja el archivo con el cursor en la parte superior de la ventana y en el primer carácter no en blanco de su línea.
z-- Redibuja el archivo con el cursor en la parte inferior de la ventana y al primer carácter no en blanco de su línea.
z.- Redibuja el archivo con el cursor en el centro de la ventana y al primer carácter no en blanco de su línea.
zt- Redibuja el archivo con el cursor en la parte superior de la ventana.
zb- Redibuja el archivo con el cursor en la parte inferior de la ventana.
zz- Redibuja el archivo con el cursor en el centro de la ventana.
fuente