Mover después del final de la palabra o Eliminar después del cursor

8

¿Cuál es la secuencia más rápida para eliminar al final de la línea después de la posición del cursor?

Ejemplo:

Quiero borrar esta línea de una manera más rápida

Secuencia: 5eDborrará el último carácter de la palabra.line

Quiero borrar este lin

Moverme con vim a menudo me coloca en el primer o el último carácter de una palabra, obligándome a moverme una tecla más cada vez que quiero eliminar al final de la línea (en el ejemplo anterior, agregando un movimiento a la derecha: 5elD) ¿Hay una forma más eficiente (moviéndose después del final de la palabra o eliminando después del cursor)?

Pierre-Jean
fuente
1
6wDdeja un espacio después de la última palabra, pero al menos el texto visible es como lo desea. 6wDxtermina el trabajo, pero luego estás en cuatro pulsaciones de teclas nuevamente.
Peter Lewerin
Gracias Peter por la alternativa, pero de hecho esta solución me deja con otra pulsación de tecla para terminar el trabajo. Como este escenario es bastante común, sería genial hacer este trabajo en una sola acción. Sin embargo, su solución es mejor que la de mi ejemplo, en la mayoría de los escenarios.
Pierre-Jean
Si lo hace como Peter sugiere y termina con un espacio en blanco al final, hay complementos como DeleteTrailingWhitespace que pueden eliminarlos automáticamente.
Philipp Moers

Respuestas:

4

Des un comando inclusivo que funciona sobre un movimiento que incluye el cursor en un extremo y el último carácter imprimible en la línea en el otro extremo. AFAIK no tiene una forma integrada de convertir un comando inclusivo en un comando exclusivo y viceversa.

La solución más pesada sería definir sus propios operadores y movimientos / objetos de texto.

Una solución algo más ligera sería definir asignaciones para esos casos de esquina.

Una solución aún más ligera, pero aburrida, sería gastar algunas teclas más en modo visual.

O bien, podría simplemente moverse de una manera un poco más "ágil":

5f D
romainl
fuente
1
Bueno, estoy un poco triste porque no hay forma más fácil, pero respondiste mi pregunta. ¡Gracias!
Pierre-Jean
1

Hay varias formas de lograr lo que quieres:

5elD
6f D
6wDx
6whD
# ... probably others too

Todo esto le cuesta solo +1 pulsación de tecla.

Si fue posible eliminar desde la posición actual +1, entonces tendrá sentido pedir que también se elimine de la posición actual -1. También plantearía la pregunta sobre otros comandos, por ejemplo, eliminar hasta el final del archivo de la línea actual +1, -1, y así sucesivamente.

¿Cómo puede funcionar esto? Solo veo dos formas posibles:

  1. Pase un parámetro a los comandos existentes para modificar su comportamiento con el matiz deseado. Esto inevitablemente le costará +1 pulsación de tecla, por lo que no estará mejor de lo que ya existe
  2. Tiene una nueva pulsación de tecla para este comportamiento. La mayoría de las teclas del teclado ya tienen algo más importante y poderoso que hacer, sería una elección muy difícil asignar una de las teclas no utilizadas para una funcionalidad tan pequeña

Entonces, no veo una manera de tener algo mejor que las características actuales :-)

Estoy de acuerdo en que es un poco desafortunado que no haya un comando "atómico" para eliminar del siguiente carácter. Veo el uso práctico de lo que está preguntando: cuando acorto un texto, a menudo quiero eliminarlo a partir de un carácter de espacio, porque no quiero dejar espacios en blanco al final de las líneas (Git se queja de eso, por ejemplo). Y los comandos de salto de palabra wy eno son muy adecuados para esto, ya que wsalta a las primeras letras y esalta a las últimas letras, y no hay un atajo para saltar en el espacio después de una palabra, excepto búsquedas explícitas como f. Así que entiendo e incluso comparto su necesidad. Simplemente no veo dónde se puede exprimir esto en la funcionalidad existente.

La mejor alternativa que se me ocurre es grabar la acción en una macro, digamos d. Al final de una palabra (en la última letra), registre así:

qdlDq

Luego, puede rehacer esta acción al final de otra palabra con @d. Para hacerlo repetidamente, puedes hacerlo @@. Al hacerlo repetidamente, esto es más rápido de escribir que lD, pero esto puede depender de su gusto. Si no lo hace repetidamente, la macro realmente no ayuda, ya que de todos modos es la misma cantidad de pulsaciones de teclas (+ la creación de la macro).

janos
fuente
"Dado que todas las teclas del teclado ya tienen algo más importante y poderoso que hacer, esta opción parece simplemente imposible". No es verdad; hay varias claves no utilizadas, y algunas que son posiblemente menos poderosas / importantes que podrían reasignarse para requerir la clave del líder, liberándolos para algo realmente importante.
Bueno, la clave que uso cuando pruebo un mapeo es la tecla de retroceso, y no es una mala elección para una operación que realiza una eliminación (actualmente lo tengo configurado para realizar una eliminación de línea sin alterar los registros generalmente utilizados por dicha acción, para poder copiar / cortar texto, eliminar líneas usando la barra espaciadora y pegar el texto original).