tutorial significado para metrologia mac editar descargar editor vim

editor - significado - ¿Puedes tomar o eliminar entre paréntesis en vi/vim?



vim significado (7)

Dada esta línea de código en C:

printf("%3.0f/t%6.1f/n", fahr, ( (5.0/9.0) * (fahr-32) ) );

¿Hay alguna manera de eliminar o tirar del primer paréntesis en negrita a su paréntesis correspondiente? Pensé en df) , pero eso solo te llevará justo después del 9.0.

¿Hay alguna manera similar de conseguir que vim agarre todo entre llaves correspondientes, independientemente de las nuevas líneas?


Varias mociones:%

El comando % salta a la coincidencia del elemento debajo del cursor. Posicione el cursor en la abertura (o cierre) paren y use y% para tirar o d% para eliminar todo del cursor al par correspondiente.

Esto funciona porque % es un "comando de movimiento", por lo que se puede usar 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.

Por defecto, "elemento" incluye corchetes, llaves, paréntesis, comentarios al estilo C y varias declaraciones precompiladoras ( #ifdef , etc.).

Hay un complemento para "coincidencia de% extendida" que puede encontrar en la página de inicio de Vim .

Puede leer la documentación sobre % y los comandos de movimiento relacionados al ingresar :help various-motions en modo comando.

objeto-seleccionar

Hay otro conjunto de comandos de movimiento que puede usar en el 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 2 niveles de pareners. Finalmente a) selecciona "un bloque". Después de eso puedes usar d o x para borrar, etc.

Si no desea incluir los paréntesis externos, puede usar "bloque interno" en su lugar:

v2i)

Ver :help object-select para la lista completa de comandos relacionados.


¿Qué hay de dib o di( .

Eliminará el bloque interno (...) donde está el cursor.

Me encantan los movimientos y selecciones de objetos de texto !


Coloque el cursor sobre el primer paréntesis, luego presione v%y o v%d .


Como dice David Norman,

Coloque el cursor sobre el primer paréntesis, luego presione v%y o v%d .

Explicación de http://vimdoc.sourceforge.net/htmldoc/vimindex.html :

tag char note action in Normal mode ------------------------------------------------------------------------------ |v| v start characterwise Visual mode |%| % 1 find the next (curly/square) bracket on this line and go to its match, or go to matching comment bracket, or go to matching |d| ["x]d{motion} 2 delete Nmove text [into buffer x]

Esto significa que seleccionará todo entre e incluyendo los dos corchetes ( % ) mientras le muestra la selección visualmente ( v ) y luego la abre / copia y elimina o corta d . (Para el buffer predeterminado)

Puedes poner / pegar con p .

Hice esta respuesta para "enseñarme a pescar" .


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 de i ("dentro") para incluir los paréntesis. Entonces, usando da( borra todo dentro ( y ) incluyendo ( y ) .

Eliminar texto dentro del par de paréntesis externo inmediato:

Entonces, para esta línea de código

printf("%3.0f/t%6.1f/n", fahr, ((5.0/9.0) * (fahr-32))); ^ ^ | | /_______/___---> Cursor range

suponiendo que su cursor se encuentre dentro del rango de cursor mencionado anteriormente, puede emitir los siguientes comandos:

di( --> Deletes ''5.0/9.0'' ci( --> Substitutes ''5.0/9.0'' yi( --> Yanks ''5.0/9.0''

Eliminar texto dentro del par n-ésimo de paréntesis externo:

Para tomar todo dentro del par n-ésimo de paréntesis externo, simplemente agregue n antes del comando anterior. Entonces, con la misma posición del cursor que arriba,

2di( --> Deletes ''(5.0/9.0) * (fahr-32)'' 2ci( --> Substitutes ''(5.0/9.0) * (fahr-32)'' 2yi( --> Yanks ''(5.0/9.0) * (fahr-32)'' 3di( --> Deletes ''"%3.0f/t%6.1f/n", fahr, ((5.0/9.0) * (fahr-32))'' 3ci( --> Substitutes ''"%3.0f/t%6.1f/n", fahr, ((5.0/9.0) * (fahr-32))'' 3yi( --> Yanks ''"%3.0f/t%6.1f/n", fahr, ((5.0/9.0) * (fahr-32))''


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 (


Puede usar d% para eliminar e y% para tirar.