Diversas mociones:%
El %
comando salta a la coincidencia del elemento debajo del cursor. Coloque el cursor en el par de apertura (o cierre) y úselo y%
para tirar o d%
para borrar todo, desde el cursor al par correspondiente.
Esto funciona porque %
es un "comando de movimiento", por lo que puede usarse en cualquier lugar donde vim espere dicho comando. De :help y
:
["x]y{motion} Yank {motion} text [into register x]. When no
characters are to be yanked (e.g., "y0" in column 1),
this is an error when 'cpoptions' includes the 'E'
flag.
De forma predeterminada, "elemento" incluye corchetes, llaves, parens, comentarios de estilo C y varias declaraciones de precompilador ( #ifdef
, etc.).
Hay un complemento para "% de coincidencia extendido" que puede encontrar en la página de inicio de Vim .
Puede leer la documentación %
y los comandos de movimiento relacionados ingresando :help various-motions
en modo comando.
seleccionar objeto
Hay otro conjunto de comandos de movimiento que puede usar en modo Visual para seleccionar varios objetos de texto.
Para resolver su problema específico, haría lo siguiente:
printf("%3.0f\t%6.1f\n", fahr, ((5.0/9.0) * (fahr-32)));
^
Digamos que su cursor está posicionado en ^
. Ingrese la siguiente secuencia para seleccionar la parte que está buscando:
v2a)
Primero v
ingresa al modo Visual, luego especifica que desea subir los 2
niveles de los padres. Finalmente el a)
selecciona "un bloque". Después de eso, puede usar d
o x
eliminar, etc.
Si no desea incluir los elementos externos, puede usar "bloqueo interno" en su lugar:
v2i)
Consulte :help object-select
la lista completa de comandos relacionados.
a
significaba "alrededor" en lugar de "a". Siente que complementa mejor "interior". Parece que no pasa un día sin aprender algo nuevo sobre Vim.¿Qué hay de
dib
odi(
?Eliminará el bloque interno (...) donde está el cursor.
¡Me encantan los movimientos y selecciones de objetos de texto !
fuente
dab
=> eliminar un bloque (incluidos sus paréntesis)Para eliminar todo lo que está dentro de un par de paréntesis, siempre puede emitir
di(
y sus derivados.Nota :
Como @porglezomb sugirió en su comentario, puede usar
a
("junto con") en lugar dei
("dentro") para incluir los paréntesis. Entonces, el usoda(
elimina todo lo que está dentro(
e)
incluye(
y)
.Eliminar texto dentro del par de paréntesis externo inmediato:
Entonces, para esta línea de código
suponiendo que su cursor está dentro del rango de cursor mencionado anteriormente, puede emitir los siguientes comandos:
Eliminar texto dentro del enésimo par de paréntesis externos:
Para agarrar todo dentro del par de paréntesis externos n-ésimo, solo agregue
n
antes del comando anterior. Entonces, con la misma posición del cursor que la anterior,fuente
a
como contrapartei
, ya que es probable que ayude a mucha gente.%
de este problema, pero esto lleva más tiempo y, en mi opinión, solo debería usarse para escenarios más complejos. Eliminar algo dentro de un cierto alcance es exactamente para lo quedi
está hecho el caso de uso .Puede usar
d%
para borrar yy%
para tirar.fuente
Coloque el cursor en el primer paréntesis, luego presione
v%y
ov%d
.fuente
Prueba ci [block-surrounder]
En su caso, coloque el cursor en cualquier lugar entre los 2 paréntesis que resaltó y pruebe las teclas: ci (
fuente
Como dice la respuesta de David Norman:
Coloque el cursor en el primer paréntesis, luego presione
v%y
ov%d
.Explicación de http://vimdoc.sourceforge.net/htmldoc/vimindex.html :
Esto significa que seleccionará todo entre e incluyendo los dos corchetes (
%
) mientras le muestra la selección visualmente (v
) y luego lo tirará / copiaráy
o eliminará / cortarád
. (Al búfer predeterminado).Puedes poner / pegar con
p
.Hizo esta respuesta a "enseñarme a pescar" .
fuente