vim - pegar - vi ir al final del archivo
eliminar palabra después o alrededor del cursor en VIM (15)
Me gustaría eliminar no solo la palabra anterior al cursor, sino también la palabra que aparece después o alrededor del cursor.
En ese caso, la solución propuesta por OP (es decir, utilizando <cw>
) se puede combinar con la respuesta aceptada para dar:
inoremap <c-d> <c-o>daw<c-w>
alternativamente (solución más corta):
inoremap <c-d> <c-o>vawobd
Muestra de entrada:
word1 word2 word3 word4
^------------- Cursor location
Salida:
word1 word4
Ahora estoy cambiando a VIM desde TextMate. Encontré ^ + W en modo inserción muy útil. Sin embargo, me gustaría eliminar no solo la palabra anterior al cursor, sino también la palabra que aparece después o alrededor del cursor.
Hice algunas búsquedas en Google, pero lo único que pude encontrar fue que ^ + W para eliminar la palabra ANTES del cursor ...
¿Quieres decir como?
dw
Creo que es solo el daw
daw - delete a word
El modo Insert no tiene ese comando, desafortunadamente. En VIM, para eliminar la palabra completa debajo del cursor, puede escribir viwd
en modo NORMAL. Lo que significa "Bloque Vual Iner W ord D elete". Use una mayúscula W
para incluir signos de puntuación.
En VI antiguo, b
mueve el cursor al principio de la palabra antes del cursor, w
mueve el cursor al principio de la palabra después del cursor, e
mueve el cursor al final de la palabra después del cursor y dw
elimina del cursor al final de la palabra.
Si escribe wbdw
, eliminará 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 son considerados como parte de la palabra que se eliminará.
Hice dos asignaciones para poder obtener consistencia en el modo de inserción y fuera de inserción.
:map <''Key of your choice''> caw
:imap <''Key of your choice''> <''Esc''> caw
La respuesta aceptada falla al intentar repetir la eliminación de palabras, pruebe esta solución:
" delete current word, insert and normal modes
inoremap <C-BS> <C-O>b<C-O>dw
noremap <C-BS> bdw
Mapea CTRL-BackSpace, también funciona en modo normal.
Lo que debes hacer es crear un imap de una determinada clave para una serie de comandos, en este caso los comandos te llevarán al modo normal, eliminarán la palabra actual y luego volverán a insertar:
:imap <C-d> <C-[>diwi
Modo normal:
daw : delete the word under the cursor
caw : delete the word under the cursor and put you in insert mode
No estoy seguro sobre su uso de "antes" y "después", pero lo ha intentado
dw
?
Editar: supongo que estás buscando algo para usar en el modo de inserción. Curiosamente, no hay nada que se encuentre en los documentos, ctrl-w parece ser todo lo que hay.
No parece que haya una forma incorporada de hacerlo en modo insertar, que era la pregunta. Algunas de las otras respuestas son correctas para el modo normal, y también indican que se podría crear una asignación personalizada para agregar la funcionalidad en el modo de inserción.
Honestamente, probablemente debas hacer la mayor parte de tu eliminación en modo normal. ^ W está bien saberlo, pero no estoy seguro de que pueda pensar en una situación en la que prefiero 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 usa productivamente, probablemente descubra que no pasa mucho tiempo en el modo de inserción.
Para eliminar todos los caracteres entre dos espacios en blanco, en modo normal:
daW
Para eliminar solo una palabra:
daw
Para eliminar la palabra completa en la que está el cursor, usa diw
Para eliminar la palabra completa en la que se encuentra el cursor y ponerlo en modo insertar, use ciw
si no desea eliminar la palabra completa, pero elimine desde donde está el dw/cw
Para eliminar una cierta cantidad de caracteres antes del cursor, puede usar X. Para eliminar un cierto número de palabras después del cursor, puede usar dw (se pueden eliminar varias palabras usando 3dw para 3 palabras, por ejemplo). Para eliminar todo el cursor en general, puede usar daw.
Lo siguiente funciona para el modo Normal: estoy de acuerdo con la respuesta de Dan Olson de que probablemente deberías 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
para 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 de inserción ^ w
La idea de utilizar hjkl para el movimiento 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 ingresó en el modo de inserción, ingresó texto y usó las teclas de flecha para terminar en el medio de la palabra que ha utilizado en contra de la filosofía de la línea de inicio.
Si está en modo normal y desea cambiar la palabra, simplemente puede usar c
(cambiar) en lugar de d
(eliminar) si desea cambiar completamente la palabra y volver a ingresar el modo de inserción sin tener que presionar i
para volver a escribir.