2011-05-22 18 views
6

En vim, en modo normal, si el cursor está en una palabra, no en la última letra, de borra el sufijo de la palabra, desde la posición del cursor. Si el cursor está en la última letra, x también lo hace, mientras que de salta al final de la siguiente palabra.En Vim, ¿cómo eliminar el sufijo de una palabra?

¿Qué comando usaría que funcionaría en ambos casos, última letra o no?

El propósito es incluir el comando en una macro.

+2

Ese comportamiento no depende de la longitud de una palabra, sino de la posición del cursor. Si el cursor está en el último carácter de una palabra, el movimiento 'e' también saltará al final de la siguiente palabra. –

+0

Así es, gracias de nuevo. La pregunta está corregida. – galath

+1

Respondido ya, pero 'cw' también puede serle útil. Hace lo que describes, pero también te lleva al modo de edición. –

Respuesta

4

Trate vwged en lugar de de, y definir una asignación como la siguiente, si se le parezca.

:nnoremap <leader>de vwged 

Parece que hace exactamente lo que quiere.

+0

'vwged' es lo que estaba buscando. Gracias. – galath

1

Si el separador de palabras es el espacio, dt<space> funcionará. t coincidirá con todos los caracteres hasta el carácter especificado.

+0

Algunos comentarios útiles: dw: elimina lo que llaman palabra "pequeña". Como en "settings.config" si está en "s", 'dw' borrará todo antes de' .' para eliminar toda la cadena, use 'dW' (elimine la palabra" grande ") – Nemoden

+0

Para generalizar esta solución:' dtC ', donde' C' es el carácter al lado del último carácter de la palabra para eliminar. –

+0

, pero ¿qué sucede si su palabra es seguida por una coma o un punto y coma (o cualquier otro carácter que no sea una palabra?)? Necesita una forma de saltar al siguiente límite de palabras –

2

También puede probar d/\> que se traduce en eliminar hasta la siguiente palabra final límite.

Cuestiones relacionadas