Moviéndose (eficientemente) verticalmente en Vim

27

Cuando quiero llegar a cierta parte de una palabra en Vim (horizontalmente), simplemente presiono w, b, fot (algo). ¿Hay una buena manera de hacer esto verticalmente? Por ejemplo, quiero llegar a una determinada palabra o letra de una línea que está debajo o encima de la línea en la que estoy actualmente.

PD: sin usar: (número de línea)

janoChen
fuente

Respuestas:

29

H, My Lmoverá el cursor a la parte superior, central e inferior de la pantalla, respectivamente. Posteriormente, puede presionar zzpara centrar la pantalla en la línea en la que está el cursor.

Alison R.
fuente
55
Y zb y zt mueven la pantalla en la parte inferior y superior respectivamente
Jani Hartikainen
11
  • puedes usar la flecha arriba / abajo para mover una línea
  • puede escribir un número y luego usar la flecha arriba / abajo para subir / bajar tantas líneas
  • pequeños gsaltos a la primera línea del documento
  • Gsaltos de capital a la última línea del documento
  • etc.

Hay una gran cantidad de otras formas diferentes, vim es muy flexible a este respecto. Recomendaría obtener una hoja de trucos de vim primero para los comandos básicos y luego, a medida que tenga tiempo, revise la documentación de vim sobre este tema.

Enlace a una hoja de trucos: hoja de trucos

También:

  • /+ cadena + (Enter)busca la siguiente aparición de cadena desde el cursor hacia adelante hasta el final del documento
  • ? - hace lo mismo pero desde el cursor hacia atrás hacia el comienzo del documento

fuente
6

Salto buscando cadenas únicas donde quiero ir. En Vim, puedes hacer esto con:

/cadena de búsqueda

Por lo general, me desplazo hacia adelante y hacia atrás usando ny N una vez que ingresé una búsqueda.

También me desplazo usando Ctrl-F y Ctrl-B para pasar rápidamente por el código. Pero uso el truco de búsqueda con mayor frecuencia. A veces puede perderse al pasar por los resultados de búsqueda con n y N. Un buen comando para orientarse es Ctrl-G, que imprime algo como esto en la parte inferior de la pantalla de Vim:

"script.pl" línea 219 de 328 --66% - col 19-23

James Thompson
fuente
¡+1 para <CTRL> -F y <CTRL> -B, aunque tiendo a "engañar" y usar <PgUp> y <PgDown> casi tan a menudo!
Technomalogical
4

intente:: él motion.txt y: él arriba-abajo-movimientos

Tiene toda la lista de posibles movimientos arriba abajo

Miguel
fuente
3

También puede hacer saltos a una línea específica en el documento emitiendo Ngg donde Nestá el número de línea que desea saltar.

mloskot
fuente
1
quieres decir NG...
Peter
1
Yo también uso Ngg(ambas variantes funcionan)
soulmerge
1
Así como:N
viraptor
2

como se mencionó anteriormente H, M, L (como en mayúsculas, medias y minúsculas) hjkl son los comandos típicos del juego de consola para izquierda, abajo, arriba, derecha y funcionan de la misma manera en vi (j, k funcionan en gmail si habilita comandos de teclado)


fuente
1

<Ctrl>+D - abajo

<Ctrl>+U - arriba

sml
fuente
Eso es un desplazamiento de media página. Para desplazamiento de página completa use <c-f>y<c-b>
Al.G.
1

Además de los movimientos verticales regulares, uso una versión modificada de /programming/4946421/vim-moving-with-hjkl-in-long-lines-screen-lines . Por lo general, me muevo con las teclas de flecha, no hjkl (mucho tiempo usuario de otros editores antes de encontrar Vim, demasiado acostumbrado a las flechas / Inicio / fin / PgUp / PgDn para cambiar, incluso después de más de 5 años de uso exclusivo de Vim).

function! ScreenMovement(movement)
   if &wrap
      return "g" . a:movement
   else
      return a:movement
   endif
endfunction
map <expr> <C-Down> ScreenMovement("j")
map <expr> <C-Up> ScreenMovement("k")
map <expr> <C-Home> ScreenMovement("0")
map <expr> <C-End> ScreenMovement("$")

Manteniendo presionada la tecla Ctrl, puedo ir visualmente al inicio / final o arriba / abajo de las filas de visualización. Para mí, esto es más eficiente que las alternativas, al menos.

Casi lo olvido: necesitaba modificar .Xdefaults para que funcione específicamente en urxvt, pero ese es probablemente un problema fuera del tema (con respuestas en Google).

Daniel Andersson
fuente