Ahora estoy cambiando VIM
de TextMate. En el ^+W
modo INSERTAR me pareció muy útil. Sin embargo, me gustaría eliminar no solo la palabra antes del cursor, sino también la palabra después o alrededor del cursor.
Busqué en Google, pero lo único que pude encontrar fue ^+W
eliminar la palabra ANTES del cursor.
vim
keyboard-shortcuts
Mantas
fuente
fuente
imap <C-d> <C-o>diw
también funciona. Tampoco crea un punto de deshacer, lo que <Esc> casi siempre hace.Modo normal:
fuente
da)
yci)
nunca pensé en esto!.vimrc
archivo así:nmap <Leader>d daw
ynmap <Leader>c caw
aw
es un ejemplo de selección de objetos. Puede probar las selecciones de objetos en modo visual para ver qué efecto tienen: vimdoc.sourceforge.net/htmldoc/motion.html#object-selectCreo que es solo
daw
fuente
a
es un comando,Append text after the cursor [count] times.
pero ¿cómodaw
funciona?d
dicta que se 'eliminará'. La 'a' es un tipo de parámetro, que especifica que la eliminación debe incluir un delimitador. Finalmente, la 'w', otra,parameter
si lo desea, especifica queword
se eliminará una unidad.dw
ydaw
?dw
se eliminará del cursor hasta el final de la palabra, mientrasdaw
que eliminará toda la palabra junto con un espacio.diw
eliminará toda la palabra sin tocar el espacio en blanco a su alrededor.Lo siguiente funciona para el modo Normal: estoy de acuerdo con la respuesta de Dan Olson de que probablemente debería estar en modo normal para la mayoría de las eliminaciones. Más detalles a continuación.
Si el cursor está dentro de la palabra:
diw
eliminar en la palabra (no incluye espacios)daw
para eliminar alrededor de la palabra (incluye espacios antes de la siguiente palabra).Si el cursor está al comienzo de la palabra, simplemente presione
dw
.Esto se puede multiplicar agregando los números habituales para el movimiento, por ejemplo, 2w para avanzar 2 palabras, por lo que d2w elimina dos palabras.
Modo Insertar ^ w
La idea de usar hjkl para moverse en Vim es que es más productivo mantener las manos en la fila de inicio. Al final de una palabra ^ w funciona muy bien para eliminar rápidamente la palabra. Si ha entrado en el modo de inserción, ingresó un texto y usó las teclas de flecha para terminar en el medio de la palabra que ha ido en contra de la filosofía de la fila de inicio.
Si está en modo normal y desea cambiar la palabra, simplemente puede usar
c
(cambiar) en lugar ded
(eliminar) si desea cambiar completamente la palabra y volver a ingresar al modo de inserción sin tener que presionari
para volver a escribirfuente
¿Quieres decir como?
fuente
dw
no eliminará más allá de un guión u otra puntuación.Para eliminar todos los caracteres entre dos espacios en blanco, en modo normal:
Para eliminar solo una palabra:
fuente
No parece que haya una forma integrada de hacerlo en modo de inserción, que era la pregunta. Algunas de las otras respuestas son correctas para el modo normal, además de señalar que se podría crear una asignación personalizada para agregar la funcionalidad en el modo de inserción.
Honestamente, probablemente deberías hacer la mayor parte de tu eliminación en modo normal. ^ W es bueno saberlo, pero no estoy seguro de poder pensar en una situación en la que prefiera hacerlo que esc para pasar al modo normal y tener los comandos de eliminación más potentes a mi disposición.
Vim es muy diferente de otros editores (incluido TextMate) de esta manera. Si lo está utilizando productivamente, probablemente encontrará que no pasa mucho tiempo en modo de inserción.
fuente
Para eliminar la palabra completa que está usando su cursor
diw
Para eliminar la palabra completa que está encendido su cursor y para ponerlo en modo de inserción, use
ciw
si no desea eliminar la palabra completa pero elimine desde donde está
dw/cw
fuente
Como hay muchas maneras de eliminar una palabra, ilustremoslas.
Suponiendo que edite:
e invocar un comando mientras el cursor está en la 'a' en 'barra':
fuente
El modo Insertar no tiene dicho comando, desafortunadamente. En VIM, para eliminar la palabra completa debajo del cursor, puede escribir
viwd
en modo NORMAL. Lo que significa " V isual-block I nner W ord D elete". Use mayúsculasW
para incluir la puntuación.fuente
La respuesta aceptada falla cuando intenta repetir la eliminación de palabras, pruebe esta solución en su lugar:
Mapea CTRL-BackSpace, también funciona en modo normal.
fuente
Para eliminar una cierta cantidad de caracteres antes del cursor, puede usar X. Para eliminar una cierta cantidad de palabras después del cursor, puede usar dw (por ejemplo, se pueden eliminar varias palabras usando 3dw para 3 palabras). Para eliminar alrededor del cursor en general, puede usar daw.
fuente
En vi antiguo,
b
mueve el cursor al comienzo de la palabra antes del cursor,w
mueve el cursor al comienzo de la palabra después del cursor,e
mueve el cursor al final de la palabra después del cursor ydw
elimina del cursor al final de la palabra.Si escribe
wbdw
, elimina la palabra alrededor del cursor, incluso si el cursor está al principio o al final de la palabra. Tenga en cuenta que los espacios en blanco después de una palabra se consideran parte de la palabra que se va a eliminar.fuente
No estoy exactamente seguro sobre su uso de "antes" y "después", pero ¿ha intentado
?
Editar: supongo que está buscando algo para usar en modo de inserción. Por extraño que parezca, no hay nada que se encuentre en los documentos, ctrl-w parece ser todo lo que hay.
fuente
Hice dos asignaciones para poder obtener consistencia en el modo de inserción y fuera del modo de inserción.
:map <'Key of your choice'> caw
:imap <'Key of your choice'> <'Esc'> caw
fuente
En ese caso, la solución propuesta por OP (es decir, usando
<c-w>
) se puede combinar con la respuesta aceptada para dar:alternativamente (solución más corta):
Entrada de muestra:
Salida:
fuente