vim - salir - ¿Pegar en modo insertar?
manual vi (10)
¿Es posible pegar en modo insert en Vim?
Pegar en el modo Insertar
Un mapa personalizado parece apropiado en este caso. Esto es lo que uso para pegar elementos tirados en el modo de inserción:
inoremap <Leader>p <ESC>pa
Mi clave de Leader
aquí es /
; esto significa que presionar /p
en el modo de inserción pegaría los elementos / líneas previamente tirados.
Mientras está en el modo de inserción, puede usar Ctrl-R {register}
, donde el registro puede ser:
-
+
para el portapapeles, -
*
para el portapapeles X (último texto seleccionado en X), -
"
para el registro sin nombre (último borrado o tirón en Vim), - o una serie de otros (ver
:h registers
).
Ctrl-R {register}
inserta el texto como si estuviera escrito.
Ctrl-R Ctrl-O {register}
inserta el texto con la sangría original.
Ctrl-R Ctrl-P {register}
inserta el texto y lo sangra automáticamente.
Se puede usar Ctrl-O
para ejecutar cualquier comando de modo normal antes de volver al modo de inserción, por lo que
Ctrl-O "+p
también se puede utilizar, por ejemplo.
Para más información, vea la documentación con :h i_ctrl-r
Puede ingresar -- INSERT (past) --
modo a través de:
- Combo de teclado: y p
o
-
:set paste
y entrar en el modo de inserción (:set nopaste
para desactivar)
una vez en -- INSERT (past) --
simplemente use la función de pegado de su sistema (por ejemplo, Ctrl Shift v en Linux, Cmd v en Mac OS).
Esta estrategia es muy útil cuando se usa vim sobre ssh.
Puedes usar esto para pegar desde el portapapeles con Ctrl v :
set pastetoggle=<F10>
inoremap <C-v> <F10><C-r>+<F10>
Y esto para convertir la selección visual en el portapapeles con Ctrl c :
vnoremap <C-c> "+y
Si también desea usar el portapapeles por defecto para el vim clásico, pegar y pegar ( y / p ) en modo normal, aquí hay una opción de configuración que lo hace:
set clipboard=unnamedplus
Con estas configuraciones, por ejemplo, puede jalar primero en modo normal y luego pegar con Ctrl v en modo de inserción. Además, puede pegar texto de diferentes instancias de vim y diferentes aplicaciones.
Otra opción es:
set clipboard=unnamed
Luego, podrá simplemente seleccionar algo arrastrando el mouse en su entorno X y luego pegarlo en vim. Pero (por alguna razón) no podrás tirar algo ( y ) en Vim y cambiarlo para insertarlo después en otro lugar, lo que probablemente sea bastante limitante.
Vim docs sobre esto: vim.wikia.com/wiki/Accessing_the_system_clipboard
Para pegar desde registros personalizados puede seguir las otras respuestas :). Esta respuesta es principalmente sobre la integración de Vim con su portapapeles del sistema.
Tenga en cuenta que para set clipboard=unnamedplus
y set clipboard=unnamed
para que funcione, necesita usar gvim o vimx ( vim-X11
): Estos se compilan con +xterm_clipboard
. Opcionalmente, puede poner esto en su .bashrc
al alias vim
con vimx
:
if [ -e /usr/bin/vimx ]; then
alias vim=''/usr/bin/vimx''; # vim with +xterm_clipboard
fi
Puede averiguar si su vim tiene o no el +xterm_clipboard
en la información proporcionada por vim --version
.
Sí. En Windows Ctrl + V y en Linux, presione ambos botones del mouse casi simultáneamente.
En Windows creo que esta línea en mi _vimrc probablemente lo hace:
source $VIMRUNTIME/mswin.vim
En Linux no recuerdo cómo lo hice. Parece que probablemente eliminé alguna línea del archivo .vimrc predeterminado.
Si configura Vim para que use el portapapeles del sistema ( :set clipboard=unnamed
), cualquier texto que copie en Vim se puede pegar usando Mayús + Insertar . Shift + Insert es simplemente una combinación de teclas de pegar en todo el sistema operativo ( Ctrl + Insertar es la ''copia'' correspondiente).
Si no desea que Vim modifique el formato en el texto pegado entrante, también puede considerar usar :set paste
. Esto evitará que Vim vuelva a tabular su código. Cuando :set nopaste
pegar :set nopaste
volverá al comportamiento normal.
También es posible alternar el modo con una sola tecla, agregando algo como set pastetoggle=<F2>
a tu .vimrc. Más detalles sobre cómo alternar la sangría automática están here .
También puede usar el botón central del mouse para pegar en el modo de inserción (solo Linux).
No no directamente. Sin embargo, lo que puede hacer es salir rápidamente del modo de inserción para una sola operación de modo normal con Ctrl-O y luego pegar desde allí, lo que terminará volviéndolo a poner en el modo de inserción.
Combo de teclas : Ctrl-O p
EDITAR: Interesante. Parece que hay una manera como varias otras personas han enumerado.
Mientras que en el modo de inserción pulsa CTRL-R {register}
Ejemplos:
-
CTRL-R *
se insertará en el contenido del portapapeles. -
CTRL-R "
(el registro sin nombre) inserta el último borrado o tirón.
Para encontrar esto en el tipo de ayuda de vim :h i_ctrl-r