Aprende-Vim/cap06_modo_insertar.md

166 lines
8.3 KiB
Markdown
Raw Permalink Normal View History

2021-05-01 21:42:23 +02:00
# Capítulo 6: El modo insertar
2020-09-08 22:33:03 +02:00
2021-02-18 05:04:53 +01:00
El modo insertar es el modo predeterminado de la mayoría de los editores de texto. En este modo, lo que escribes es lo que aparece en la pantalla.
Sin embargo, eso no significa que no haya cosas que aprender. El modo insertar de Vim contiene muchas funcionalidades útiles. En este capítulo, aprenderás cómo utilizar estas funcionalidades del modo insertar en Vim para mejorar tu eficiencia a la hora de escribir.
2021-02-18 05:04:53 +01:00
## Formas de entrar al modo insertar
Hay varias formas de entrar en el modo insertar desde el modo normal. Aquí tienes algunas de ellas:
```text
2021-02-18 05:04:53 +01:00
i Inserta texto antes del cursor
2021-05-01 21:42:23 +02:00
I Inserta texto antes del primer carácter que no sea un espacio en blanco de la línea
2021-02-18 05:04:53 +01:00
a Añadir texto después del cursor
2021-05-01 21:42:23 +02:00
A Añadir texto al final de la línea
2021-02-18 05:04:53 +01:00
o Crea una nueva línea debajo del cursor y cambia al modo insertar
O Crea una nueva línea encima del cursor y cambia al modo insertar
2022-03-11 19:15:01 +01:00
s Elimina el carácter debajo del cursor e inserta texto (sustituye texto)
S Elimina la línea actual e inserta texto (sustituye toda la línea)
2021-05-01 21:42:23 +02:00
gi Inserta texto en la misma posición donde el modo insertar fue detenido por última vez en el *buffer* actual
2021-02-18 05:04:53 +01:00
gI Inserta texto al comienzo de una línea (columna 1)
2020-09-08 22:33:03 +02:00
```
2021-06-10 11:24:02 +02:00
Ten en cuenta el patrón de minúscula/mayúscula. Para cada comando en minúscula existe su equivalente en mayúscula. Si eres un usuario nuevo, no te preocupes si no recuerdas toda la lista anterior. Empieza con `i` y `o`. Estos comandos deberían ser suficientes para empezar. Gradualmente ve aprendiendo más con el paso del tiempo.
2020-09-08 22:33:03 +02:00
## Formas diferentes de salir del modo insertar
2020-09-08 22:33:03 +02:00
Hay unas cuantas maneras de regresar al modo normal mientras estás en el modo insertar:
2021-02-18 05:04:53 +01:00
```text
2021-02-18 05:04:53 +01:00
<Esc> Salir del modo insertar y volver al modo normal
Ctrl-[ Salir del modo insertar y volver al modo normal
Ctrl-C Similar a Ctrl-[ y <Esc>, pero no controla las abreviaciones
2020-09-08 22:33:03 +02:00
```
2021-05-01 21:42:23 +02:00
Encuentro que la tecla `<Esc>` está algo apartada del resto de las teclas, por lo que mapeo el teclado de mi equipo para que la tecla de `<Bloq mayús>` se comporte como `<Esc>`. Si buscas el teclado de la ADM-3A de Bill Joy \(creador de Vi\), verás que la tecla `<Esc>` no estaba en la esquina superior izquierda como en los teclados modernos, si no al lado de la tecla `q`. Esta es la razón por lo que creo que tiene sentido cambiar el `<Bloq mayús>` por `<Esc>`.
2020-09-08 22:33:03 +02:00
Otra convención común que he visto en personas que utilizan Vim es que mapean `<Esc>` a `jj` o `jk` en el modo insertar. Si quieres probar esta opción, añade una de estas líneas \(o ambas\) en tu archivo vimrc.
2020-09-08 22:33:03 +02:00
```text
2020-09-08 22:33:03 +02:00
inoremap jj <esc>
inoremap jk <esc>
```
## Repetir el modo insertar
2020-09-11 09:24:04 +02:00
Puedes pasar un parámetro de conteo antes de entrar al modo insertar. Por ejemplo:
2021-02-18 05:24:01 +01:00
```text
2020-09-08 22:33:03 +02:00
10i
```
Si después escribes "¡Hola mundo!" y sales del modo insertar, Vim repetirá el texto 10 veces. Esto funcionará con cualquier otro método del modo insertar \(por ejemplo: `10I`, `11a`, `12o`\).
2020-09-08 22:33:03 +02:00
## Borrar segmentos en el modo insertar
2020-09-08 22:33:03 +02:00
2021-05-01 21:42:23 +02:00
Cuando cometes un error al escribir, puede ser molesto pulsar la tecla `<Retroceso>` repetidamente. Podría tener más sentido si vas al modo normal y borras tu error. También puedes borrar varios caracteres al mismo tiempo mientras estás en el modo insertar:
2020-09-08 22:33:03 +02:00
```text
Ctrl-H Borrar un carácter
Ctrl-W Borrar una palabra
Ctrl-U Borrar una línea entera
2020-09-08 22:33:03 +02:00
```
2021-02-18 05:34:45 +01:00
## Insertar desde un registro
2020-09-08 22:33:03 +02:00
2021-05-01 21:42:23 +02:00
Los registros de Vim pueden almacenar textos para un uso futuro. Para insertar un texto en cualquier registro nominal mientras estás en el modo insertar, escribe `Ctrl-R` más el símbolo del registro. Hay muchos símbolos que puedes utilizar, pero para esta sección vamos a utilizar solo los registros nominales \(a-z\).
2021-02-18 05:34:45 +01:00
2021-06-10 11:24:02 +02:00
Para ver esto en acción, primero necesitas copiar una palabra al registro "a". Sitúa tu cursor encima de cualquier palabra y después teclea:
2020-09-08 22:33:03 +02:00
```text
2020-09-08 22:33:03 +02:00
"ayiw
```
2021-02-18 05:34:45 +01:00
Veamos el comando en detalle:
* `"a` le dice a Vim que resultado de tu siguiente acción irá al registro "a"
* `yiw` copia la palabra completa sobre la que está el cursor. Revisa el capítulo sobre la gramática de Vim
2020-09-08 22:33:03 +02:00
2021-02-18 05:34:45 +01:00
El registro "a" ahora contiene la palabra que acabas de copiar. Mientras estás en el modo insertar, para pegar el texto almacenado en el registro "a", escribe:
2020-09-08 22:33:03 +02:00
```text
Ctrl-R a
2020-09-08 22:33:03 +02:00
```
2021-02-18 05:34:45 +01:00
Hay múltiples de tipos de registros en Vim. Trataré sobre ellos con gran detalle en el siguiente capítulo.
2020-09-08 22:33:03 +02:00
## Desplazamiento de la pantalla \(_scroll_\)
2020-09-08 22:33:03 +02:00
¿Sabías que puedes mover el contenido de la pantalla \(hacer _scroll_\) mientras estás en el modo insertar? Mientras estás en el modo insertar, si entras en el submodo con `Ctrl-x`, puedes realizar operaciones adicionales. Desplazar la pantalla es una de ellas.
2020-09-08 22:33:03 +02:00
```text
Ctrl-x Ctrl-Y Desplaza el contenido de la pantalla hacia arriba
Ctrl-x Ctrl-E Desplaza el contenido de la pantalla hacia abajo
2020-09-08 22:33:03 +02:00
```
2021-02-18 18:57:18 +01:00
## Autocompletado
2020-09-08 22:33:03 +02:00
2021-06-10 11:24:02 +02:00
Vim tiene un mecanismo de auto completado propio utilizando un submodo con `Ctrl-x` \(como con el desplazamiento que hemos visto antes\). Aunque esto no es tan bueno como [intellisense](https://code.visualstudio.com/docs/editor/intellisense) o cualquier otro Protocolo de lenguaje de servidor \(o LSP por sus siglas en inglés\), pero para algo que está disponible de manera predeterminada, es una característica muy capaz.
2021-02-18 18:57:18 +01:00
Aquí tienes algunos comandos de autocompletado útiles para empezar a utilizarlo:
2020-09-08 22:33:03 +02:00
```text
Ctrl-x Ctrl-L Inserta una línea completa
Ctrl-x Ctrl-N Inserta un texto desde el archivo actual
Ctrl-x Ctrl-I Inserta un texto desde los archivos incluidos
Ctrl-x Ctrl-F Inserta un nombre de archivo
2020-09-08 22:33:03 +02:00
```
2021-06-10 11:24:02 +02:00
Cuando lanzas el auto completado, Vim mostrará una ventana emergente. Para navegar arriba y abajo por la ventana, utiliza `Ctrl-n` y `Ctrl-p`.
2020-09-08 22:33:03 +02:00
2021-06-10 11:24:02 +02:00
Vim también tiene dos auto completados que no utiliza el submodo `Ctrl-x`:
2020-09-08 22:33:03 +02:00
```text
Ctrl-N Encuentra la siguiente palabra que coincide
Ctrl-P Encuentra la palabra anterior que coincide
2020-09-08 22:33:03 +02:00
```
2021-06-10 11:24:02 +02:00
En general, Vim busca en todo el texto disponible en todos los _buffers_ la fuente para el auto completado. Si tienes abierto un _buffer_ con una línea que dice: "Los donuts de chocolate son los mejores":
2021-02-18 18:57:18 +01:00
2021-05-01 21:42:23 +02:00
* Cuando escribes "Choco" y después `Ctrl-x Ctrl-l`, esto encontrará y añadirá la línea completa.
* Cuando escribes "Choco" y después `Ctrl-p`, esto encontrará y añadirá la palabra "Chocolate".
2020-09-08 22:33:03 +02:00
2021-06-10 11:24:02 +02:00
El auto completado es un tema muy amplio en Vim. Esto es solo la punta de iceberg. Para aprender más, echa un vistazo a la ayuda de Vim `:h ins-completion`.
2020-09-08 22:33:03 +02:00
2021-02-18 19:16:22 +01:00
## Ejecutar un comando del modo normal
2020-09-08 22:33:03 +02:00
2021-02-18 19:16:22 +01:00
¿Sabías que Vim puede ejecutar un comando del modo normal mientras estás en el modo insertar?
2020-09-08 22:33:03 +02:00
2021-05-02 20:21:13 +02:00
Mientras estás en el modo insertar, su pulsas `Ctrl-O`, estarás en el submodo `insert-normal`. Si miras el indicador de modo en la parte inferior izquierda, normalmente verás `-- INSERT --`, pero al pulsar `Ctrl-O` este cambia a `-- (insert) --`. En este modo, solo puedes ejecutar _un solo comando_ del modo normal. Algunas cosas que puedes hacer:
2020-09-08 22:33:03 +02:00
2021-02-18 19:16:22 +01:00
**Centrado y salto**
```text
2021-05-02 20:21:13 +02:00
Ctrl-O zz Lleva la línea donde está el cursor al centro de la ventana
Ctrl-O H/M/L Mueve el cursor a la parte superior/media/baja de la ventana
Ctrl-O 'a Salta a la marca a
2020-09-08 22:33:03 +02:00
```
2021-02-18 19:16:22 +01:00
**repitiendo texto**
```text
2021-05-02 20:21:13 +02:00
Ctrl-O 100ihola Inserta "hola" 100 veces
2020-09-08 22:33:03 +02:00
```
2021-02-18 19:16:22 +01:00
**Ejecutar comandos de la terminal**
```text
2021-05-02 20:21:13 +02:00
Ctrl-O !! curl https://google.com Ejecuta curl
Ctrl-O !! pwd Ejecuta pwd
2020-09-08 22:33:03 +02:00
```
2021-02-18 19:16:22 +01:00
**Borrado más rápido**
```text
2021-05-02 20:21:13 +02:00
Ctrl-O dtz Elimina desde la ubicación actual del cursor hasta justo antes de la primera letra "z" que encuentre
Ctrl-O D Elimina desde la posición actual del cursor hasta el final de la línea
2020-09-08 22:33:03 +02:00
```
2021-02-18 19:16:22 +01:00
## Aprende el modo insertar de la manera más inteligente
2020-09-08 22:33:03 +02:00
2021-05-02 20:21:13 +02:00
Si tu, al igual que yo provienes de otro editor de texto, puede ser tentador permanecer en el modo insertar. Sin embargo, el permanecer en el modo insertar cuando no tienes que introducir texto no es lo más indicado. Desarrolla un hábito de volver al modo normal cuando tus dedos no estén escribiendo texto nuevo.
2020-09-08 22:33:03 +02:00
2021-06-10 11:24:02 +02:00
Cuando necesites insertar un texto, pregúntate si ese texto ya existe. Si lo hay, trata de copiarlo o mover ese texto en vez de escribirlo. Si tienes que entrar en el modo insertar, comprueba si puedes auto completar el texto lo máximo posible. Evita escribir la misma palabra más de una vez si puedes.