¿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.txtindica que xmap y smap aparecieron en esa versión.xnoremapnivnoremapfunciona"0debe tener el contenido de su tirón. Es un poco más tedioso de escribir, pero"0pdebe 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ágalonddseguido 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/.../.../gccomandos de tipo de confirmación podría estar más cerca de lo que desea5@m(para una macro llamadam)xnoremap p "0pen mi ~ / .vimrcA menudo uso otro registro, copio la línea que necesita en un registro con nombre
"ayy luego la pego desde allí"apfuente
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,
"cpor ejemplo, y luego use"cppara pegar de ahí en adelante.fuente
use
npwherenes 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
ciwpara cambiar la palabra interna. Este método tiene la ventaja de ser fácilmente repetible usando el.comando de repetición.yiwTire de la palabra interna (copie la palabra debajo del cursor, diga "primero").ciw<C-r>0Cambie "segundo", reemplazándolo con "primero" (es Ctrl-R)..Cambie "tercero", reemplazándolo por "primero".fuente
ciw<C-r>0no funciona en mi caso.ciwcambia 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.