Si tengo este texto en vim, y mi cursor está en el primer carácter:
www.foo.com
Sé que puedo hacer:
cw
para cambiar hasta el primer período, porque unaword
(w minúscula) termina en cualquier puntuación O espacio en blancocW
para cambiar la dirección completa, porque unaWord
(w mayúscula) termina solo en espacios en blanco
Ahora, ¿qué pasa si tengo esto?
stupid_method_name
y quieres cambiarlo por esto?
awesome_method_name
Ambos cw
y cW
cambiar todo, pero solo quiero cambiar el fragmento antes del guión bajo.
Mi técnica alternativa es c/_
, que significa 'cambiar hasta llegar al siguiente guión bajo en una búsqueda', pero para mí, eso también hace que todos los guiones bajos se resalten como términos de búsqueda, lo cual es un poco molesto.
¿Hay un especificador como w
o W
que no incluya guiones bajos?
:nohl
?Respuestas:
Puedes hacer
cf_
. f no resaltará el carácter buscado.También puede hacerlo
ct_
si no desea incluir el _.fuente
f
avanza hacia el personaje;F
retrocede al personaje;t
avanza justo antes del personaje; yT
retrocede al personaje a la derecha del personaje objetivo. Entonces su segundo ejemplo debería haber sidoct_
.ct_
Es exactamente lo que quería. Esto ahora se ha convertido en parte de mi flujo de trabajo habitual. ¡Gracias!Pon esto en tu .vimrc:
set iskeyword-=_
Entonces _ será tratado como un límite de palabra (aunque no como un límite de WORD), y cw podría usarse para cambiar simplemente "impresionante", y cW para cambiar todo.
Ver:
:help iskeyword
y
:help word
para más información.
fuente
ct_
como dice doble cara a continuación, ya que es conciso y es el comportamiento predeterminado de vim.camelcasemotion es un complemento vim bastante útil que te permite moverte a través de las palabras cuando usas subrayado o notación camelcase. Con este complemento, puede colocar una coma delante de muchos de los comandos de movimiento vim tradicionales que le permitirán tratar las palabras en subrayado o notación de camello como palabras completas.
fuente