Yo uso un ejemplo de código javascript:
1 var a = 1;
2 var b = |{};
El cursor está en la posición de |
(en el carácter "{" cuando la forma del cursor está bloqueada), descubro que se me a
debe asignar un objeto, por lo que quiero modificarlo como se muestra a continuación:
1 var a = {};
Entonces, quiero saber cuando el cursor está en "{", ¿cómo eliminar rápidamente todo el contenido antes de "{" hasta el espacio en blanco después del signo "=" en la línea 1?
En otros editores normales, solo presionaré la tecla de retroceso para eliminar el código. Pero no sé cómo lograr esto en vim.
insert-mode
normal-mode
Aaron Shen
fuente
fuente
i
y usar la tecla de retroceso. Ningún cuerpo te disparará por eso. Yo creo que.eol
a continuación, la tecla de retroceso será eliminar los saltos de línea. Tambiénstart
deberá ser incluido en la configuración. (Ver:help backspace
) Sin embargo, ¡no uses este método! Hay varios métodos mucho más rápidos detallados en las respuestas a continuación.Respuestas:
No estoy seguro si entiendo totalmente la pregunta, pero si desea eliminar hasta que solo lo haya hecho
var a = {};
, podría, desde la posición del cursor, usard?1Enterdhace un movimiento y puede darle un patrón de búsqueda /para una búsqueda hacia adelante o ?hacia atrás.
Aquí hay un pequeño gif que demuestra esto:
fuente
Enter
después de escribird?1
.Si está utilizando vim (y no vi clásico), en su ejemplo podría hacer
vkd
(ovkx
).v
lo pondrá en modo 'visual' (select)k
subirá una línea para colocar el cursor en el '1', seleccionando la parte que desea eliminard
ox
eliminará la selecciónfuente
Eliminar arriba
Para este ejemplo específico,
dgk
es una de las formas más rápidas de hacerlo.El
d
comando, como explicó Akshay , puede ser seguido por un movimiento, eliminando todos los caracteres entre donde comienza el cursor y hacia dónde lo lleva el movimiento.En su código, desea eliminar todo entre la posición del cursor y la misma columna una fila más arriba, por lo que mover el cursor hacia arriba con el
gk
movimiento (que cuando se usa con un operador no es lineal) logrará su objetivo.EDITAR: BobH señala en los comentarios que este método solo funciona cuando
'wrap'
está configurado. Como tal, a menos que siempre tenga un conjunto de ajustes, probablemente sea mejor usardvk
ovkd
, como lo sugieren las otras respuestas en esta página.Eliminar palabras al revés
También puede usar:
d5b
od4B
, que eliminará 5 palabras o 4 PALABRAS al revés, respectivamente. (1;
es una PALABRA, pero dos palabras regulares).fuente
vim -u NONE -U NONE
y elimina ambas líneas.gk
según las características, aparentemente requiere:set wrap
(algo crípticamente). No pude entender por qué esto aparentemente estaba funcionando para todos los demás, pero no para mí, cuando la ayudagk
también parecía implicar que debería funcionar. La única pista era que el significado principal degk
tenía que ver con las líneas envueltas. Una vez que traté de configurar wrap (tipo capricho), listo, funcionó.Todavía no puedo comentar, así que necesito hacer una nueva respuesta. Las claves d kproporcionadas por Rich no funcionan para mí, incluso cuando se utiliza la opción no compatible. Una razón podría ser que el movimiento kse considera linealmente por vim, en cuyo caso se eliminan ambas líneas. De
:help d
:También muestra el remedio: se usa dvkpara forzar que el movimiento tenga carácter. Esto hace el truco para mí.
No sabía antes, así que aquí está
:help o_v
:fuente