Tengo algo de texto en mi búfer de pegado, por ejemplo, hice una yw
(palabra de arrastre) y ahora tengo 'foo' en mi búfer.
Ahora voy a la palabra 'barra' y quiero reemplazarla con mi búfer de pegado.
Para reemplazar el texto manualmente, podría hacerlo cw
y luego escribir la nueva palabra.
¿Cómo puedo hacer una 'palabra de cambio' pero usar el contenido de mi búfer de pegado en lugar de escribir manualmente la palabra de reemplazo?
La mejor opción que tengo en este momento es ir al principio de la palabra que quiero reemplazar y hacer dw
(eliminar palabra), luego ir al otro lugar y hacer la yw
(palabra de arrastre), luego volver al área de reemplazo y hacer p
(pegar) que es un poco torpe, especialmente si no están en la misma pantalla.
vep
.ve"0p
funcionaría para permitirle repetir su cambiomap <C-j> ciw<C-r>0<ESC>
para que no importe de qué parte de la palabra presione^j
.:help insert
luego busque CTRL-R/CTRL-R
. Para saber cómove"0p
funciona, mira:help registers
yw
para tirar de su palabra, luego mueva el cursor a la palabra que desea reemplazar y use"_dw
para eliminarla, enviando el texto al registro nulo (para que no sobrescriba el contenido del"
registro, donde el texto arrancado / cortado va por defecto ), y luego simplemente pegue conp
.Puede usar el siguiente mapeo para facilitar un poco las cosas:
... así que en modo normal, puede usar
\dw
para eliminar una palabra, sin afectar el"
registro.fuente
Para hacer esto a la manera VIM, intencionalmente usas el registro, eliminar y otros registros.
Registrarse
"0
es el registro de extracción. Todo lo que tire se colocará aquí, pero las eliminaciones nunca tocarán registrarse"0
.Entonces, en tu ejemplo, acabas de decir una palabra. Para reemplazar una palabra con lo que acaba de extraer, aproveche las eliminaciones que nunca toquen el registro de extracción. Así que vaya a la palabra objetivo, elimínela con
dw
, luego péguela desde su registro de extracción con"0p
, o mejor aún,cw
entonces^R0
(que es repetible).Un cierre opuesto al registro de extracción es el registro de pequeñas eliminaciones
"-
. Aquí se coloca cualquier pequeña eliminación o cambio de eliminación, pero los tirones nunca se tocan"-
. Una eliminación cuenta como pequeña si es menor que una línea completa.Registros
"1
:"9
son los registros del historial de borrados. Con"1
que contiene la última deleción o cambio grande de eliminación, y"9
que contiene el más antiguo deleción o cambio grande de eliminación. Sólo eliminaciones que no son pequeñas, es decir, las eliminaciones de una línea o más, son empujados hacia"1
-"9
.Para cualquier operación que cambie un registro, también se coloca una copia en el registro predeterminado, es decir, sin nombre
""
. Este es el registro utilizado cuando no se nombra explícitamente un registro.El registro
"_
es el registro del agujero negro, y siempre está vacío. Si lo elimina, no se cambiará nada en ningún registro, ni siquiera el""
registro predeterminado , ni el registro del agujero negro en sí. El texto eliminado ha desaparecido por completo, aparte de su historial de deshacer. Tirar hacia, o pegar desde el registro de agujeros negros no hace esencialmente nada.El registro de agujeros negros le
"_
permite hacer cosas como primero una pequeña eliminación, luego varias otras eliminaciones"_
sin cambiar su pequeño registro de eliminaciones"-
, luego pegue su primera pequeña eliminación.Otros registros son el último registro insertado
".
, los registros de nombre de archivo"%
y"#
, el registro de comando, el registro de":
búsqueda"/
y el registro de expresión"=
.Puede obtener una lista de todos estos registros y sus contenidos mediante el comando
:register
. Ese comando es muy útil para experimentar y aprender qué termina dónde.fuente
Necesito esto tan a menudo, escribí un complemento para simplificar y permitir la velocidad máxima: Reemplazar con registro .
Este complemento ofrece un
gr
comando dos en uno que reemplaza el texto cubierto por un {movimiento} / objeto de texto, líneas completas o la selección actual con el contenido de un registro; el texto antiguo se elimina en el registro de agujeros negros, es decir, se ha ido. Maneja de manera transparente muchos casos de esquina y permite una repetición rápida a través del.
comando estándar . Si no te gusta, su página tiene enlaces a alternativas.fuente
Para repetir el pegado, use el comando de cambio.
cw ^R0ESC (^ R = Control + R; 0 para el registro 0)
reemplazará la palabra con los contenidos del reg. 0 y vamos a repetirlo con.
Esto es genial para cgn(VIM 7.4) para reemplazar los patrones de búsqueda:
fuente
Como todavía no está incluido, generalmente reemplaza cadenas con
:%s/.../.../
y también puede hacerlo con la palabra debajo del cursor.:s/find/
<ctrl-r>
y elige con el cursor la palabra con la que desea reemplazarla.<ctrl-w>
("palabra" pequeña) o<ctrl-a>
(palabra "grande") para pegar la palabra debajo del cursor en la línea de comandoVea el enlace sobre cómo usar el cursor en la línea de comando .
fuente
Usualmente uso esto: ywpara tirar
foo
, luego eliminarbar
con dw, y como paso final, ponerfoo
del registro0
que contiene el texto arrancado usando "0p. Repita la colocación con punto ( .) según sea necesario.Además, en lugar de ywy dw, puede usar yiwy diw(observe el extra i, significa adentro ). Con eso, puede tirar o eliminar palabras de cualquier ubicación dentro de ellas, no solo al comienzo de la palabra.
fuente
Utilizo este complemento para expandir la región de selección: https://github.com/terryma/vim-expand-region
Entonces, mi combinación para cambiar una palabra será:
vvp
en cualquier lugar de una palabra.También tengo un truco para guardar contenido de registro sin nombre después de pegar para poder repetir esto.
(mi portapapeles es de selección automática)
fuente
Estoy usando la asignación de teclas a continuación para reemplazar la palabra actual con la palabra copiada.
" replace with Register 0
map <leader>rr ciw<C-r>0<Esc>
yiwcopiar una palabra Navega a una palabra. ,rrreemplazar la palabra
La clave del líder es el mapa ,.
fuente
,rw
Tendría más sentido, y en QWERTY es probablemente un smidgen más fácil y rápido de usar. En DVORAK, elegí,rc
, que aunque no tiene mucho sentido, es más fácil y rápido que todos ellos. En DVORAK,,rw
es un espectáculo de terror;)Primero, navegue hasta el comienzo de la palabra que desea tirar. Si está en el medio de la palabra, simplemente
b
vuelva al comienzo. Luego hazye
para tirar de la palabra completa, sin espacios finales (y
ank ae
nd). Finalmente, vaya a la palabra que desea reemplazar, tal vez haciendow
algunas veces, y haga unavep
para ingresarv
al modo de selección actual, seleccione al finale
de la palabra yp
anote el contenido que se tiró por última vez.(Si alguien quiere saber por qué simplemente no comenté la respuesta aceptada, por la pequeña modificación del uso en
ye
lugar de hacerloyw
, es porque mi reputación en esta pila todavía es demasiado baja).fuente
yw
para tirar del mundo, ve al mundo que quieres cambiar.v
para seleccionar el mundo,ve
ovw
dependiendo de su situación.p
para pegar el mundo que copió para reemplazar el bloque seleccionadofuente
Agregando a las otras mejores respuestas. Un poco demasiado obvio, pero podría simplemente pegar antes de eliminar. 'yw' luego vaya la palabra que desea reemplazar, 'pldw' (pegue, mueva un carácter a la derecha, elimine la palabra.
fuente