¿Cuál es la mejor manera de reemplazar varias líneas con el contenido del portapapeles?
El problema que tengo es que cuando tiro de una línea y la pego sobre otra línea, el "tirón" se reemplaza con la línea que acabo de reemplazar. Ahora, si quiero reemplazar otra línea con la misma línea, tengo que volver a subir y tirar de ella nuevamente.
Tiene que haber una mejor manera de hacer esto.
vnoremap
). El archivo de ayuda de Vimversion7.txt
indica que xmap y smap aparecieron en esa versión.xnoremap
nivnoremap
funciona"0
debe tener el contenido de su tirón. Es un poco más tedioso de escribir, pero"0p
debe hacer lo que quiera.Alternativamente, no seleccione y reemplace las líneas antiguas al principio. Si encuentra esas líneas con una búsqueda, simplemente presione
n.
una y otra vez (después de una inicialp
), luego, cuando estén todas pegadas, hágalondd
seguido de tantasn.
s como sea necesario.El cambio mental más grande que tuve que hacer al pasar a Vim es descubrir cómo aplicar las ediciones de grupo de forma secuencial. Es decir, en lugar de hacer un montón de ediciones en una línea y luego hacer un montón de las mismas ediciones en otra línea, haré la primera edición en un montón de líneas (usando
.
con gran efecto), luego la segunda edición en un montón de líneas, etc. Alternativamente, el uso de macros puede ayudar ya que son fantásticas, pero a veces un poco más tediosas para trabajar correctamente con cambios "complejos".fuente
:%s/.../.../gc
comandos de tipo de confirmación podría estar más cerca de lo que desea5@m
(para una macro llamadam
)xnoremap p "0p
en mi ~ / .vimrcA menudo uso otro registro, copio la línea que necesita en un registro con nombre
"ay
y luego la pego desde allí"ap
fuente
Cuando pega sobre una selección en Vim, reemplazará el registro predeterminado con el contenido de la selección. Si pegar sobre una selección está borrando el contenido del registro del portapapeles, es muy probable que tenga la siguiente línea en su .vimrc
Una opción es eliminar eso y usar el registro explícito del portapapeles
"+
Otra opción es usar cualquiera de los otros registros nombrados explícitamente (az). Después de la primera pasta, tire de la línea hacia atrás,
"c
por ejemplo, y luego use"cp
para pegar de ahí en adelante.fuente
use
np
wheren
es la cantidad de tiempo que desea pegar las líneas, por ejemplo3p
, pegará 3 líneas.fuente
En lugar de usar copiar / pegar, a menudo es mejor usar un comando de objeto de texto como
ciw
para cambiar la palabra interna. Este método tiene la ventaja de ser fácilmente repetible usando el.
comando de repetición.yiw
Tire de la palabra interna (copie la palabra debajo del cursor, diga "primero").ciw<C-r>0
Cambie "segundo", reemplazándolo con "primero" (es Ctrl-R)..
Cambie "tercero", reemplazándolo por "primero".fuente
ciw<C-r>0
no funciona en mi caso.ciw
cambia al modo de inserción donde se<C-r>
vuelve inútil. ¿Existe una explicación fácil para esto? ¿Podría eso tener que ver con el editor de texto (no estoy usando pur VIM sino enlaces de teclado VIM en RStudio)<C-r>
está diseñado para usarse en modo de inserción, ya que es la forma de pegar desde un registro sin salir del modo de inserción, es decir, en Vim; No estoy familiarizado con RStudio, pero supongo que tiene razón y no han implementado este enlace de teclas en particular.