vim eliminando trucos hacia atrás

119
  • ¿Cómo se borra una palabra a la izquierda? En otras palabras, elimine la palabra cuando el cursor se encuentre al final.
  • ¿Cómo se borran los caracteres al principio de la línea?
  • ¿Cómo se borra el primer espacio en blanco de la izquierda?

  • ¿Algún otro truco relacionado con la eliminación de palabras?

vehomzzz
fuente

Respuestas:

163

En general, d <motion> eliminará desde la posición actual a la posición final después de <motion>. Esto significa que:

  1. d <leftArrow> eliminará el carácter actual e izquierdo
  2. d $ eliminará desde la posición actual hasta el final de la línea
  3. d ^ eliminará del retroceso actual al primer carácter que no sea un espacio en blanco
  4. d0 eliminará desde el actual hacia atrás hasta el principio de la línea
  5. dw elimina la palabra actual hasta el final de la palabra actual (incluido el espacio final)
  6. db elimina el actual al principio de la palabra actual

Lea esto para aprender todas las cosas que puede combinar con el comando 'd'.

Lucas Omán
fuente
1
Otros atajos útiles en caso de que le resulte dbdifícil recordar: 5. dw or d<ctrl+rightarrow>y 6. db or d<ctrl+leftarrow>
Crisboot
6
En lugar de escribir d<leftArrow>hacer en su dhlugar, ya que hes la clave para moverse a la izquierda
Dylanthepiguy
4
¿Por qué se acepta esta respuesta? d <leftArrow> (y ninguno de los siguientes excepto dw) no eliminará un carácter debajo de un cursor como OP quería.
listerreg
73

He estado en este escenario muchas veces. Quiero deshacerme de todos los espacios en la línea 10 para que se unan a la línea 9 después de la coma.

ingrese la descripción de la imagen aquí

Esto es básicamente una combinación de línea simple en VIM.

kJ hace el truco (mira abajo)

Vim une líneas

Abdo
fuente
9
¡He estado buscando esto por todas partes!
functionvoid
2
jaja, quiero esto y no tengo ni idea de cómo describirlo en Google. Qué suerte que me desplazo hacia abajo =))
Thai Tran
1
No puedo creer cuántas veces he hecho esto manualmente. Esto es exactamente lo que estaba buscando, ¡GRACIAS!
tobiasandersen
1
Esto es exactamente lo que estaba buscando. Vim me
deja boquiabierto
4
La explicación para esto es: k= Arriba, J= Unir la línea de abajo a la actual con un espacio en el medio. También podrías hacer kgJpara unirte sin un espacio. gJ= Unir la línea de abajo sin espacios entre ellos. Vía cheatsheet: vim.rtorr.com
KhalilRavanna
31

Para responder al punto # 3, diwy dawson excelentes.

Randy Morris
fuente
4
Me parece triste que no haya comandos de dos caracteres para eliminar una palabra al revés cuando estás en la última letra, porque en editores estándar como notepad ++, gedit, etc., puedes usar fácilmente CTRL + Retroceso ... excepto por eso vim es excelente.
itmuckel
3
@ roggan87 Si estás en la última letra de una palabra, dbborra las letras que preceden a la última letra pero aún deja la última letra.
Prashanth Chandra
2
¿Puede usted explicar lo que el iy alo están haciendo en medio de los comandos? Sé que el principio des "eliminar" y supongo que el final wes "palabra".
Carl G
1
@CarlG La mejor explicación está en :help text-objects. El párrafo inicial es muy conciso y creo que lo describe muy bien.
Randy Morris
5
<kbd> i </kbd> es "interior" y <kbd> a </kbd> es "a", como en "una palabra". El primero no incluirá espacios en blanco adjuntos, mientras que el segundo incluirá espacios en blanco finales, si los hubiera; de lo contrario, incluirá espacios en blanco anteriores. Muy útil, gracias.
Carl G
25

En modo de inserción:

  • ^ w
  • ^ u
  • no puedo responder fuera de mi cabeza ;-)

De otra manera:

  • dw
  • v0x
  • no puedo responder fuera de mi cabeza ;-)
Michael Krelin - hacker
fuente
No sabía que puedo eliminar una palabra en el modo Insertar en Vim. Esto ayuda mucho.
Đỗ Tiến
18

En modo comando:

  1. bdw, atrás borrar palabra.
  2. d^(al primer no en blanco), d0(al primer carácter)
  3. BdW (ir al primer espacio en blanco eliminar al siguiente espacio en blanco)

(Wiki de la comunidad, siéntete libre de hackear).

zoul
fuente
14
  1. db (si el cursor está después de la palabra) o bdw
  2. d0(o d^si desea eliminar el primer carácter que no esté en blanco)
  3. dEo dtSpacepara eliminar al primer espacio o d/\sEnterpara eliminar al siguiente carácter de espacio en blanco.

Editar

Dado que la pregunta se ha cambiado de modo que 3 es eliminar el primer carácter de espacio en blanco a la izquierda, mi respuesta debería cambiar a:

  1. dBo dShiftTSpacepara eliminar de nuevo al primer espacio o d?\sEnterpara eliminar al carácter de espacio en blanco anterior.

Ver:

:help motion.txt
:help WORD
DrAl
fuente
Buena llamada al # 3. No estaba seguro de cómo manejar CUALQUIER espacio en blanco. Vale la pena mencionar que dF <SPACE> eliminará hasta el <SPACE> incluido, mientras que dT <SPACE> dejará el <SPACE> allí.
Mark Biek
Vine aquí buscando algo como bdw. El carácter restante (el que originalmente estaba debajo del cursor) dbseguía molestándome.
Deiwin
8

Siento que ninguna de las respuestas está completa:

En general, normalmente inicia una operación de eliminación utilizando d<motion>, y rara vez utilizando x.

Nota: cuando Nno se especifica, se comporta como si N=1(elimina un solo carácter)

Caracteres discretos:

<N>x - Eliminar N caracteres a la derecha

d<N><left-arrow> - Eliminar N caracteres a la izquierda

d<N><right-arrow> - Eliminar N caracteres a la derecha

Límites de palabras:

Nota: La primera palabra anterior / posterior es la que está debajo del cursor

d<N>b - Eliminar desde el principio de la N-ésima palabra anterior hasta la posición actual

d<N>e - Eliminar desde la posición actual hasta el final de la N-ésima palabra siguiente

d<N>w- Igual que d<N>epero con espacios en blanco finales

diw - Eliminar toda la palabra debajo del cursor

daw- Igual que diwpero con espacios en blanco finales

Límites de línea:

d0 - Eliminar desde el principio de la línea hasta la posición actual

d^ - Eliminar desde el primer carácter que no sea un espacio en blanco a la posición actual

d$ - Eliminar desde la posición actual hasta el final de la línea

Daniel Trugman
fuente
1

/ <CR>x

(busque un espacio hacia adelante, presione enter para ir allí, x para eliminar)

Puede que haya una forma más mágica de hacerlo, pero no conozco ninguna.

brettkelly
fuente
Si desea eliminar el primer espacio en blanco a la izquierda, presione? en lugar de / en mi ejemplo.
brettkelly