Saltar al contenido

¿Puede tomar o eliminar entre paréntesis en vi / vim?

Puede que se de el caso de que halles alguna incompatibilidad con tu código o trabajo, recuerda probar siempre en un entorno de testing antes subir el código al trabajo final.

Solución:

Qué pasa dib o di(.

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

¡Me encantan los movimientos y las selecciones de objetos de texto!

Varias mociones:%

El % comando salta a la coincidencia del elemento debajo del cursor. Coloque el cursor en el par de apertura (o cierre) y utilice y% por tirar o d% para eliminar todo, desde el cursor hasta los pares coincidentes.

Esto funciona porque % es un “comando de movimiento”, por lo que se puede usar en cualquier lugar que vim espere tal comando. Desde :help y:

["x]ymotion       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, paréntesis, comentarios de estilo C y varias declaraciones del precompilador (#ifdef, etc.).

Hay un complemento para “coincidencias de% extendido” que puede encontrar en la página de inicio de Vim.

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

seleccionar objeto

Existe 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.0ft%6.1fn", fahr, ((5.0/9.0) * (fahr-32)));
                                   ^

Digamos que su cursor está posicionado en ^. Ingrese la siguiente secuencia para seleccionar la pieza que está buscando:

v2a)

Primero v ingresa al modo Visual, luego especifica que desea ir 2 niveles de parens hacia arriba. Finalmente, el 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 obtener la lista completa de comandos relacionados.

Para borrar todo lo que está dentro de un par de paréntesis, siempre puede emitir di( y sus derivados.

Nota :

Como sugirió @porglezomb en su comentario, puede usar a (“junto con”) en lugar de i (“dentro”) para incluir el paréntesis. Entonces, usando da( borra todo lo que hay dentro ( y ) incluso ( y ).

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

Entonces, para esta línea de código

printf("%3.0ft%6.1fn", fahr, ((5.0/9.0) * (fahr-32)));
                                ^       ^
                                |       |
                                 __________---> Cursor range

asumiendo que su cursor está 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'

Eliminando texto dentro del n-ésimo par exterior de paréntesis:

Para tomar todo lo que está dentro del par n-ésimo exterior de paréntesis, 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.0ft%6.1fn", fahr, ((5.0/9.0) * (fahr-32))'
3ci(   --> Substitutes '"%3.0ft%6.1fn", fahr, ((5.0/9.0) * (fahr-32))'
3yi(   --> Yanks '"%3.0ft%6.1fn", fahr, ((5.0/9.0) * (fahr-32))'

valoraciones y comentarios

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *