vim
Comandos en modo normal (Edición)
Buscar..
Introducción - Nota rápida sobre el modo normal
En el Modo normal, los comandos pueden ingresarse mediante combinaciones de teclas directas (escribiendo u para deshacer el último cambio, por ejemplo). Estos comandos a menudo tienen equivalentes en el modo 'ex', al que se accede escribiendo dos puntos :, lo que lo coloca en un búfer de una sola línea en la parte inferior de la ventana de Vim.
En el modo 'ex', después de escribir los dos puntos, escribe un nombre de comando o su abreviatura seguido de Enter para ejecutar el comando. Así,: undo
Introduzca logra lo mismo que escribir directamente u en el modo normal.
Puede ver que los comandos directos a menudo serán más rápidos (una vez que se aprenden) que los comandos 'ex' para una edición simple, pero de manera completa, siempre que sea posible en la documentación que sigue, si ambos están disponibles para su uso, se mostrarán ambos.
La mayoría de estos comandos también pueden ir precedidos de un recuento prefijando o entremezclando un 3dd tecleando números en el Modo Normal, por ejemplo, elimina tres líneas (comenzando desde la posición actual del cursor).
Deshacer y rehacer básico
Deshacer
Mando | : | Descripción |
---|---|---|
tu | u , undo | Deshacer el cambio más reciente |
5u | Deshacer los cinco cambios más recientes (usar cualquier número) |
Tenga en cuenta que en Vim, el 'cambio más reciente' varía según el modo en el que se encuentre. Si ingresa el Modo Insertar ( i ) y escribe un párrafo completo antes de volver al Modo Normal ( Esc ), ese párrafo completo es Considerado el cambio más reciente.
Rehacer
Mando | : | Descripción |
---|---|---|
Ctrl-R | red , redo | Rehacer el cambio deshecho más reciente. |
2Ctrl-R | Rehace los dos cambios deshechos más recientes (use cualquier número) |
Hay otra forma de deshacer y rehacer los cambios en Vim que se maneja de manera un poco diferente. Cuando deshace un cambio con u , realiza una copia de seguridad de los nodos en un 'árbol' de sus cambios, y al presionar Ctrl-R retrocede esos nodos en orden. (El árbol de deshacer es un tema aparte y es demasiado complejo para cubrirlo aquí).
También puede utilizar T (es decir, en mayúsculas) para eliminar todos los últimos cambios en una sola línea (la línea donde se hicieron los últimos cambios). Esto no atraviesa los nodos del árbol de la misma manera que u . El uso de U en realidad cuenta como un cambio en sí mismo (otro nodo hacia adelante en el árbol), de modo que si presiona U por segunda vez inmediatamente después del primero, actuará como un comando Rehacer.
Cada uno tiene sus usos, pero u / : undo
debería cubrir los casos más simples.
Repetir el ultimo cambio
El comando Repetir, ejecutado con la tecla de punto o punto ( . ), Es más útil de lo que parece. Una vez aprendido, te encontrarás usándolo a menudo.
Mando | : | Descripción |
---|---|---|
. | Repite el ultimo cambio | |
10. | Repite el último cambio 10 veces. |
Entonces, para un ejemplo muy simple, si realiza un cambio en la línea 1 escribiendo i I
Esc, con el siguiente resultado:
1 I made a mistake
2 made a mistake
3 made a mistake
Su cursor estará en la posición 1 de la línea 1, y todo lo que necesita hacer para arreglar las siguientes dos líneas es presionar j. dos veces, es decir, j para bajar una línea y . Para repetir el último cambio, que fue la adición del I
No es necesario volver al modo Insertar dos veces para corregir esas líneas.
Se vuelve mucho más potente cuando se usa para repetir macros .
Copiar, Cortar y Pegar
En Vim, estas operaciones se manejan de manera diferente a lo que podría estar acostumbrado en casi cualquier otro editor o procesador de textos moderno ( Ctrl-C , Ctrl-X , Ctrl-V ). Para entender, necesita saber un poco acerca de los registros y movimientos.
Nota: esta sección no cubrirá la copia y corte del Modo Visual o el desplazamiento de rango, ya que están fuera del alcance del Modo Normal y la edición básica.
Registros
Vim utiliza el concepto de registros para manejar el movimiento de texto dentro del propio programa. Windows tiene un solo portapapeles para este propósito, que es análogo a un solo registro en Vim. Al copiar, cortar y pegar en Vim, hay formas de utilizar un flujo de trabajo de edición similar (donde no tiene que pensar en los registros), pero también hay posibilidades mucho más complejas.
Un registro está dirigido a la entrada / salida de un comando prefijando el comando con " y un nombre de letra minúscula.
Mociones
Un movimiento en Vim es cualquier comando que mueve la posición del cursor a otra parte. Al copiar, cortar y pegar en el Modo normal, las posibilidades de selección de texto para el movimiento solo están limitadas por su conocimiento de los movimientos. Algunos serán ilustrados a continuación.
Copiado y corte
Las operaciones básicas de copiar y cortar comandos se basan en y ('yank', para copiar) yd ('delete', para cortar). Verás las similitudes en la siguiente tabla.
Mando | : | Descripción |
---|---|---|
y {movimiento} | Copie ('yank') el texto indicado por el movimiento en el registro predeterminado | |
yy | Copie la línea actual en el registro predeterminado, en línea | |
Y | Copie la línea actual en el registro predeterminado (sinónimo para yy ) | |
"ayiw | Copie la palabra en la que se encuentra el cursor en el registro 'a' | |
20 "byy | Copie veinte líneas, comenzando desde el cursor, en el registro 'b' | |
d {movimiento} | Cortar ('eliminar') el texto indicado por el movimiento en el registro predeterminado | |
dd | Cortar la línea actual en el registro predeterminado, en línea | |
re | Corte desde el cursor hasta el final de la línea en el registro predeterminado (NO un sinónimo para dd ) | |
"adiw | Corta la palabra donde está el cursor en el registro 'a' | |
20 "bdd | Cortar veinte líneas, comenzando desde el cursor, en el registro 'b' |
Nota: cuando algo se copia o corta en línea , el comportamiento de pegado que se muestra a continuación colocará el texto antes o después de la línea actual (en lugar del cursor). Ejemplos para aclarar.
Paliza
Hay varias formas de pegar en Vim, dependiendo de lo que estés tratando de lograr.
Mando | : | Descripción |
---|---|---|
pag | Pegue lo que esté en el registro predeterminado después del cursor | |
PAG | Pegue lo que esté en el registro predeterminado antes del cursor | |
"ap | Pegue el contenido del registro 'a' después del cursor. | |
"cP | Pegue el contenido del registro 'c' antes del cursor. |
Entonces, ¿cómo realizo un corte y pegado realmente simple?
Si tengo el siguiente texto:
1 This line should be second
2 This line should be first
Puedo hacer el corte y pegado más simple colocando mi cursor en algún lugar de la línea 1 y escribiendo ddp . Aquí están los resultados:
1 This line should be first
2 This line should be second
¿Que pasó? dd 'Corta' la primera línea (línea) en el registro predeterminado, que solo contendrá una cosa a la vez, como el portapapeles de Windows, yp pega la línea después de la actual, que acaba de cambiar debido al comando dd .
Aquí hay un ejemplo no tan simple. Necesito mover un par de palabras. (Esto es artificial e innecesario, pero puede aplicar este principio a trozos más grandes de código).
1 These words order out are of
Puedo repetir w para llegar a la 'o' al frente de 'order' (o b si lo escribí y me di cuenta de mi error).
Entonces "adaw para poner 'orden' en el registro 'a'.
Entonces w para llegar a la 'a' en 'son'.
Después de esto, escribiría "bdaw para poner 'are' en el registro 'b'. Ahora tengo esto desplegado:
1 These words out of
Para ser claros, ahora 'orden' está en el registro 'a' y 'son' está en el registro 'b', como dos portapapeles separados.
Para ordenar las palabras correctamente, escribo b para llegar a la 'o' en 'out', y luego "bP para poner 'son' del registro 'b' delante de 'out':
1 These words are out of
Ahora escribo A para llegar al final de la línea, seguido de Space Esc (asumiendo que no había espacio después de 'de') y "ap para poner" orden "donde pertenece.
1 These words are out of order
Terminación
La finalización se puede utilizar para hacer coincidir las palabras utilizadas en un documento. Al escribir una palabra, Ctrl p o Ctrl n coincidirán con las palabras anteriores o siguientes similares en el documento.
Esto incluso se puede combinar con el modo Ctrl-X para completar líneas completas. Por ejemplo, escriba algo como:
This is an example sentence.
luego ve a la siguiente línea y comienza a escribir la misma oración:
Thi
y luego presione Ctrl p que resultará en:
This
Ahora, aún en el modo de inserción, presione Ctrl x Ctrl p y luego la siguiente palabra se completará, lo que resultará en:
This is
Continúe presionando Ctrl x Ctrl p hasta completar toda la línea.
Si sabes que quieres completar una línea completa, escribe esto:
This is an example sentence.
luego en la siguiente línea escribe:
Thi
y pulsa x Ctrl l para completar la línea.
Si la finalización que se está haciendo es un nombre de archivo Ctrl x Ctrl f puede usarse para completar ese directorio. Tipo:
~/Deskt
luego presione Ctrl x Ctrl f y:
~/Desktop
será completado (si está en esa ubicación). Ctrl x Ctrl f se puede usar repetidamente para enumerar los archivos en el escritorio.