2011-03-29 9 views
41

He habilitado la palabra habilitada y tengo líneas bastante largas. Pero moverse dentro de una línea que en realidad tiene 4 líneas de altura con "w" es engorroso. Sigo usando/para saltar a la palabra que estoy buscando, pero eso parece exagerar un poco.Vim: moverse rápidamente dentro de la línea larga

¿Alguna pista sobre cómo moverse más rápido dentro de una línea?

Gracias,

MrB

Respuesta

77
  • Puede utilizar $, 0 y ^ para desplazarse a puntos finales de línea y luego usar w y b. Además, agregar un argumento numérico a w y b puede acelerar el proceso, por lo que usar 6w en lugar de solo w puede ponerlo donde debe estar.
  • Usar f y t para desplazarse a caracteres individuales también ayudará. (Utilizo esto típicamente con la puntuación. Si, por ejemplo, tengo cuatro oraciones en una línea larga 2f. irá al final de la segunda oración)
  • Usar las teclas ( y ) es una forma alternativa de navegar oraciones completas.
  • La división de líneas largas en líneas múltiples (manualmente, o con set tw=72 [u 80]) puede hacer que su edición sea más simple. Siempre puede unirse a ellos más tarde con J.
  • Algo que acabo de descubrir, puede mover hacia arriba y hacia abajo una línea de línea usando gj y . De esta forma, puede tratar su línea envuelta como líneas múltiples.

Si comenta el tipo de datos que está editando, podría hacernos más fácil hacer sugerencias.

+2

me gusta su respuesta la mejor, así que he añadido mis sugerencias, así y elimina mi propia respuesta. +1 –

+13

gracias por gj, gk tip. –

+8

Tanto 'gj' como' gk' también se pueden realizar con flechas equivalentes, es decir 'g ' y 'g '. ¡Muchas gracias! – alexm

5

Puede usar ( y ) para navegar por oraciones; solo busca ., pero eso puede ser inmensamente útil, especialmente si no le gusta la oración y desea cambiarla: (c) saltará al principio de la oración actual, luego cambiará la oración completa.

También puede usar w y e, con modificadores de conteo, para mover palabras. 3w moverá tres palabras a la vez.

También puede usar f y F para buscar hacia adelante y hacia atrás un carácter específico. Esto es mucho más útil si está buscando la palabra quite o syzygy que the. :)

2

Puede también moverse con WB que saltar al siguiente espacio :) G se mueve al final del documento

19

Creo que se puede beneficiar de GK y GJ en lugar de sólo ky j.

Consulte también 'virtualedit' para ver algunas opciones que le permiten desplazarse por las áreas 'anuladas' sin mover el cursor al siguiente mejor carácter físico.

Es posible que desee (temporalmente)

nnoremap <buffer> k gk 
nnoremap <buffer> j gj 

Dejar de lado la parte <buffer> aplicar este a nivel mundial.

+0

Esta es la solución que uso. Muy conveniente. Las flechas arriba y abajo aún retienen el comportamiento tradicional de moverse a la línea actual anterior y siguiente. – gotgenes

3

Recientemente comencé a usar un complemento que me parece muy bien para moverlo muy rápido dentro de una línea (o el archivo de agujeros).

El nombre del complemento es PreciseJump y lo puedes encontrar here.

Cuando utiliza este complemento define las asignaciones _f y _F.

si escribe _f seguido de x resaltará todos los x caracteres y reemplazará temporalmente con otros caracteres que puede presionar para saltar a esa ubicación. Consulte la página del script para ver una ilustración.

5

Si decide ir a la ruta de reasignación de éstos:

nnoremap k gk 
nnoremap j gj 

aquí son un par de otros a lo largo de las mismas líneas:

nnoremap 0 g0 
nnoremap $ g$ 
nnoremap^g^ 
4

Mi estrategia preferida, mientras que saltar las líneas alrededor de tiempo es el de usar fF y tT para concentrarse en el personaje. Lo que hace que esta familia de movimientos sobrealimentados es que se pueden utilizar los ; y , movimientos, por lo que no tiene que contar la posición de carácter en relación con el cursor, pero sólo un paso a través de ellos (muy útil con '". etc)

digamos que tenemos una línea:

reallyLongObjectName.longMethod().prettyPrettyLongMethod().burp(); 

Si necesitamos para saltar a, por ejemplo, el tercer punto desde el inicio de la línea, podemos utilizar cualquiera 3f. o visitar f.;; dos puntos y aterrizando en el tercero.

Mientras que el estilo ;, puede usar más teclas, me pareció más ágil y divertido en general.

2

Tenga en cuenta que usar "g" seguido de las flechas hacia arriba o hacia abajo realmente funciona bien, pero si tiene líneas largas y se mueve rápidamente puede escribir "gg" por error y terminar en la parte superior del texto. .! (Deshacer no lo traerá de vuelta, y AFAIK no hay una sola tecla presionada para volver a donde estaba).

Me ha pasado demasiadas veces.

Lo que hice fue, y me sugieren que, a modificar (o crear) su "~/.vimrc" y agrega estas dos líneas:

map <C-Up> g<Up> 
map <C-Down> g<Down> 

Esto le mapa de control en marcha y control- hasta los comandos de movimientos. Hará imposible la escritura errónea de "gg" y es perfectamente coherente con control -derecha y control- izquierda para moverse por las líneas largas.

Si agrega estas otras dos líneas, puede usar el mismo comando en el modo de inserción (!)

imap <C-Up> <C-[> g<Up> i 
imap <C-Down> <C-[> g<Down> i 

(VIM es grande!)

Greg Ruo

Cuestiones relacionadas