vim
Insertar texto
Buscar..
Saliendo del modo insertar
Mando | Descripción |
---|---|
<Esc> | Deja el modo insertar, activa autocomandos y abreviaturas. |
<C-[> | Exacto sinónimo de <Esc> |
<Cc> | Deja el modo de inserción, no dispara autocommands. |
A algunas personas les gusta usar un par de caracteres relativamente poco comunes como jk
como acceso directo para <Esc>
o <C-[>
que puede ser difícil de alcanzar en algunos teclados:
inoremap jk <Esc>l
Diferentes maneras de entrar en el modo de inserción
Mando | Descripción |
---|---|
a | Añadir texto siguiendo la posición actual del cursor |
A | Añadir texto al final de la línea actual |
i | Insertar texto antes de la posición actual del cursor |
I | Insertar texto antes del primer carácter no en blanco de la línea actual |
gI | Insertar texto en la primera columna de la línea del cursor |
gi | Insertar texto en la misma posición donde se dejó la última vez en el modo Insertar |
O | Abra una nueva línea sobre la línea actual y agregue texto allí (CAPITAL O ) |
o | Abra una nueva línea debajo de la línea actual y agregue texto allí (minúscula o ) |
s o cl | Eliminar el carácter debajo del cursor y cambiar al modo de inserción |
S o cc | Eliminar toda la línea y cambiar al modo Insertar |
C | Eliminar desde la posición del cursor hasta el final de la línea e iniciar el modo de inserción |
c{motion} | Eliminar {motion} e iniciar el modo de inserción (ver Movimiento básico ) |
Métodos abreviados del modo Insertar
Mando | Descripción |
---|---|
<Cw> | Borrar palabra antes del cursor |
<Ct> | Sangrar la línea actual con un shiftwidth |
<Cd> | Línea de corriente unindent con un shiftwidth |
<Cf> | reindente la línea, (mueva el cursor a la posición de sangría automática) |
<Ca> | Insertar texto previamente insertado |
<Ce> | Inserta el caracter abajo |
<Ch> | Eliminar un carácter hacia atrás |
<Cy> | Inserta el caracter arriba |
<Cr>{register} | Insertar el contenido de {register} |
<Co>{normal mode command} | ejecute {normal mode command} sin salir del modo de inserción |
<Cn> | Siguiente opción de autocompletar para la palabra actual |
<Cp> | Opción de autocompletar anterior para la palabra actual |
<Cv> | Insertar un carácter por su valor ASCII en decimal |
<Cv>x | Insertar un carácter por su valor ASCII en hexadecimal |
<Cv>u | Insertar un carácter por su valor Unicode en hexadecimal. |
<Ck> | Ingrese un digraph |
Ejecutando comandos normales desde el modo de inserción
Mientras está en el modo de inserción, presione <Co>
para abandonar temporalmente el modo de inserción y ejecutar un comando normal de una sola vez.
Ejemplo
<Co>2w
salta a la segunda palabra a la izquierda y regresa al modo de inserción.
Nota: Repitiendo con .
solo repetirá las acciones de volver al modo insertar
Esto permite algunas asignaciones útiles, por ejemplo,
inoremap <C-f> <Right>
inoremap <C-b> <Left>
inoremap <C-a> <C-o>^
inoremap <C-e> <C-o>$
Ahora ctrl + a pondrá el cursor al principio de la línea y ctrl + e - al final de la línea. Estas asignaciones se utilizan de forma predeterminada en readline
, por lo que pueden ser útiles para las personas que desean coherencia.
Insertar texto en varias líneas a la vez
Presione Ctrl + v para entrar en el modo de bloqueo visual.
Use ↑ / ↓ / j / k para seleccionar múltiples líneas.
Presiona Shift + i y comienza a escribir lo que quieras.
Después de presionar Esc , el texto se insertará en todas las líneas que seleccionó.
¡Recuerde que Ctrl + c no es 100% equivalente a Esc y no funcionará en esta situación!
Existen leves variaciones de Shift + i que puede presionar mientras se encuentra en el modo de bloque visual:
Llave | Descripción |
---|---|
c o s | Eliminar el bloque seleccionado y entrar en el modo de inserción |
do | Eliminar las líneas seleccionadas (desde el cursor hasta el final) e ingresar al modo de inserción |
R | Eliminar las líneas seleccionadas y entrar en el modo de inserción |
UNA | Anexar a las líneas seleccionadas, con la columna al final de la primera línea |
También tenga en cuenta que presionando . ¡Después de una operación de bloqueo visual se repetirá esa operación donde está el cursor!
Pegar texto usando el comando "pegar" del terminal
Si usa el comando pegar de su programa emulador de terminal, Vim interpretará la secuencia de caracteres como si estuvieran escritos. Eso causará todo tipo de efectos indeseables, particularmente malas críticas.
Para arreglar eso, desde el modo de comando:
:set paste
Luego pase al modo de inserción, con i , por ejemplo. Observe que el modo es ahora -- INSERT (paste) --
. Ahora pegue con su comando de emulador de terminal, o con el mouse. Cuando haya terminado, vaya al modo de comando, con Esc y ejecute:
:set nopaste
Hay una forma más simple, cuando uno quiere pegar solo una vez. Ponga esto en su .vimrc (o use el complemento unimpaired.vim ):
function! s:setup_paste() abort
set paste
augroup unimpaired_paste
autocmd!
autocmd InsertLeave *
\ set nopaste |
\ autocmd! unimpaired_paste
augroup end
endfunction
nnoremap <silent> yo :call <SID>setup_paste()<CR>o
nnoremap <silent> yO :call <SID>setup_paste()<CR>O
Ahora se puede simplemente presionar yo
para pegar el código debajo del cursor, y luego <Esc>
para volver al modo normal / nopaste.
Cómo pegar desde un registro mientras está en modo inserción
Mientras está en el modo de inserción, puede usar <Cr>
para pegar desde un registro, que se especifica en la siguiente pulsación de tecla. <Cr>"
por ejemplo, las pastas del registro sin nombre ( "
).
Ver :help registers
.
Comandos y accesos directos de inserción avanzados
Aquí hay una referencia rápida para comandos avanzados de inserción, formateo y filtrado / accesos directos.
Comando / Atajo | Resultado |
---|---|
g +? + m | Realizar codificación rot13, en movimiento m |
n + ctrl + a | + n al número debajo del cursor |
n + ctrl + x | - n al número debajo del cursor |
g + q + m | Formato de líneas de movimiento m a ancho fijo. |
: r ce w | Líneas centrales en el rango r al ancho w |
: r le i | Alinear a la izquierda las líneas en el rango r con sangría i |
: r ri w | Alinear a la derecha las líneas en el rango r al ancho w |
! mc | Filtrar líneas de movimiento m mediante comando c. |
n !! do | Filtra n líneas a través del comando c |
: r do | Rango de filtro r líneas a través del comando c |
Deshabilitar la sangría automática para pegar el código
Al pegar texto a través de un emulador de terminal, la función de sangría automática puede destruir la sangría del texto pegado.
Por ejemplo:
function () {
echo 'foo'
echo 'bar'
echo 'baz'
}
se pegará como
function () {
echo 'foo'
echo 'bar'
echo 'baz'
}
En estos casos, use la opción paste
/ nopaste
para deshabilitar / habilitar la función de sangría automática:
:set paste
:set nopaste
Además de esto, hay un enfoque más simple del problema: agregue la siguiente línea en su .vimrc:
set pastetoggle=<F3>
Y si quieres pegar como está desde el portapapeles. Solo presiona F3
en el modo de insert
, y pega. Presiona F3
otra vez para salir del modo de paste
.