¿La forma más simple de eliminar una palabra "compuesta"?

20

Disculpas si "compuesto" no es el término técnico. Me refiero a lo siguiente:

Hi, I-am-a-composite-word and we are not

Me gustaría eliminar solo la palabra compuesta. En el modo de comando, si muevo el cursor hacia I, entonces repetir dwvarias veces, o escribir mejor dwuna vez, seguido de unas pocas .pulsaciones, hará el truco. Sin embargo, por varias razones, me encuentro haciendo esto con bastante frecuencia durante el día, por lo que me preguntaba si hay una manera más simple.

PD: NO consideraría que el comando d9wsea ​​una forma más simple. Contar una secuencia larga de palabras y guiones no es mi idea de "más simple".

DeltaIV
fuente

Respuestas:

33

Lo que está llamando una palabra compuesta es en realidad una PALABRA (por oposición a una palabra). Lectura :h wordy :h WORDdebería ser útil:

                            *word*
A word consists of a sequence of letters, digits and underscores, or a
sequence of other non-blank characters, separated with white space (spaces,
tabs, <EOL>).  This can be changed with the 'iskeyword' option.  An empty line
is also considered to be a word.
                            *WORD*
A WORD consists of a sequence of non-blank characters, separated with white
space.  An empty line is also considered to be a WORD.

Lo que está buscando aquí es dWcuando está en Io diWcuando está en cualquier lugar de la palabra.

Tal vez en el futuro también deba leer :h 'iskeyword'.

statox
fuente
1
Gracias por la respuesta: funciona. A propósito de la definición: A WORD consists of a sequence of non-blank characters, separated with white space. Separated with white spacesignifica que la PALABRA está separada por otras palabras o palabras con espacios en blanco, ¿verdad?
DeltaIV
2
@DeltaIV Sip in-this-sentence there are four"WORDslas 4 palabras son in-this-sentence, there, arey four"WORDs. Es fácil ver cuando se utiliza wy Wo by Bmovimientos, por ejemplo. Tenga en cuenta que un espacio en blanco puede ser un espacio "regular" o un carácter de tabulación.
statox
1
Esta respuesta sería más útil de inmediato si comenzara con "Lo que está buscando aquí es dW .." en lugar de obligar al lector a leer el párrafo del medio para encontrar la solución.
Mark Meuer el
9

Otra solución más general es eliminar hasta el carácter de espacio en blanco usando dt (con un espacio después de t), lo que significa "eliminar a [carácter]. Esto a menudo también es útil para cosas como dt:y similares.

allo
fuente
¿qué dt: hacer?
DeltaIV
1
Cuando publiqué la misma respuesta, aprendí que puedes usar <code>dt </code>para incluir un espacio al final.
BurnsBA
2
@DeltaIV En realidad, lo que realmente necesita es leer :h motion.txty usar vimtutor, eso lo ayudará en gran medida a obtener los conceptos básicos de Vim
statox
@statox Solía ​​ser experto en VIM ... Hace 10 años :-) vimtutorsuena muy interesante. No estoy seguro de que esté instalado en el servidor remoto (parece que ni siquiera la manutilidad está instalada). Sin embargo, comprobaré: si se instala automáticamente junto con el vimpaquete, entonces hay muchas posibilidades de que pueda usarlo.
DeltaIV
1
@ BurnsBA Gracias, eso es realmente útil para este sitio. Por cierto. puedes editar publicaciones de otros e incluso obtener una reputación de +2 si tu edición se realiza mediante algún proceso de revisión por pares. Pero de esta manera, también aprendí algo nuevo :-).
allo el
4

Si desea seguir usando dwy similares, y también quiere dejar que funcione haciendo doble clic en una palabra, puede agregar

set iskeyword+=-

a su .vimrc, que se agrega -como un carácter de palabra.

Ejemplo:

Haga doble clic en cualquier personaje en ab-cdresaltados visuales ab-cd.

nst0022
fuente
Estoy de acuerdo con cambiar a dW, pero su solución también es bastante buena porque también afecta el modo visual, supongo. Quiero decir, modificando iskeyword, haciendo doble clic y luego presionando ddebería poder eliminar ab-cd. ¿Derecho?
DeltaIV
O tal vez debería cambiar al modo visual con v, en lugar de hacer doble clic. ¿Derecho?
DeltaIV
1
@DeltaIV modificando iskeyword, puede usar cualquier método con objetos de palabras (incluidos iw o aw, significativamente más simple que usar un mouse o modo visual)
D. Ben Knoble
4

No olvide los comandos f(find) y t(to). Probablemente solo dt o df (tenga en cuenta el espacio al final).

BurnsBA
fuente