Quiero escribir un comando que especifique "la palabra debajo del cursor" en VIM. Por ejemplo, digamos que tengo el cursor sobre una palabra y la hago aparecer dos veces. Por ejemplo, si la palabra es "abc" y quiero "abcabc", entonces podría escribir:
:s/\(abc\)/\1\1/
Pero luego me gustaría poder mover el cursor a "def" y usar el mismo comando para cambiarlo a "defdef":
:s/\(def\)/\1\1/
¿Cómo puedo escribir el comando en la línea de comandos para que haga esto?
:s/\(*whatever is under the commandline*\)/\1\1
fuente
yiw
másbyw
sólo por la memoria muscular. En el escenario en el que su cursor ya está en el primer carácter de la palabra, debe omitirb
y simplemente escribiryw
vs puede omitiri
inyiw
. Pueden ocurrir accidentes, y corregir un error es sin duda más pulsaciones de teclas :)Mientras está en el modo de línea de comandos, CTRL+ R CTRL+ Winsertará la palabra debajo del cursor.
Consulte la ayuda para
c_CTRL-R
obtener una lista de todos los demás registros especiales:fuente
yiw
: Yank inner word (la palabra debajo del cursor). Este comando también mueve el cursor al principio de la palabra.P
: Pega antes del cursor.A continuación, puede asignar el ejemplo:
< ALT > - D
a este comando:fuente
Otra forma fácil de hacer esto es usar el
*
comando.En el modo normal, cuando supere una palabra, escriba
*
convierte el patrón de búsqueda en la palabra actual (por ejemplo, \ <abc \>).:s//
realiza una sustitución utilizando el patrón de búsqueda actual, y\0
en la sección de reemplazo está la cadena coincidente.A continuación, puede repetir este comportamiento, decir sobre la palabra "def", ya sea escribiendo lo mismo de nuevo o escribiendo
@:
simplemente repite el último comando ex, sin necesidad de un <Enter>, en este caso la sustitución.También puede grabar una macro rápida para hacer esto usando el
q
comandoLuego repítelo al contenido de su corazón escribiendo
cuando sobre una palabra quieres doblar. Como esto es solo un carácter menos que la solución anterior, puede que no valga la pena para usted, a menos que esté haciendo otros comandos anteriores entre la duplicación de palabras, lo que cambiaría el comportamiento de
@:
fuente
Debe escapar de las barras invertidas dentro del mapeo. También puede incluir la cadena de sustitución dentro del mapeo.
fuente
hará lo que usted describe.
también avanzará el cursor a la siguiente palabra.
fuente
@ user11211 tiene la forma más sencilla de duplicar la palabra debajo del cursor:
tirar de la palabra interior (mueve el cursor al principio de la palabra), pegar (antes del cursor).
p.ej. recto [t] hacia adelante ----> sencillo [d] sencillo
[] es cursor
Elaborar...
Probablemente desee que el cursor siga su palabra duplicada:
recto [t] adelante ----> directo directo []
NOTA:
es la palabra interior yank (sin espacios en blanco)
es tirar todas las palabras (incluidos los espacios en blanco finales).
es por tanto una palabra duplicada que incluye espacios en blanco y cursor de posición.
recto [t] adelante ----> sencillo sencillo []
fuente
fuente
n
bandera del:substitute
comando para imprimir cuántas veces aparece la palabra debajo del cursor en el búfer actual. Bastante inteligente, pero en realidad no es una respuesta a esta pregunta.