tutorial metrologia limpiador detergente descargar commands comandos vim quotes brackets parentheses yank

metrologia - ¿Cómo seleccionar entre paréntesis(o comillas o...) en Vim?



vim python (9)

Estoy seguro de que solía haber un complemento para este tipo de cosas, pero ahora que lo necesito, parece que no puedo encontrarlo (naturalmente), así que solo lo preguntaré de forma agradable.

¿Cuál es la forma más fácil de seleccionar entre corchetes o comillas, o en general una lista de caracteres coincidentes?

write ( *, ''(a)'' ) ''Computed solution coefficients:''

Por ejemplo, aquí me gustaría seleccionar (a) , o Computed solution coefficients:

No estoy interesado en multilínea, solo casos que ocurren en una línea.


Escriba una función Vim en .vimrc usando la función incorporada searchpair:

searchpair({start}, {middle}, {end} [, {flags} [, {skip} [, {stopline} [, {timeout}]]]]) Search for the match of a nested start-end pair. This can be used to find the "endif" that matches an "if", while other if/endif pairs in between are ignored. [...]

( http://vimdoc.sourceforge.net/htmldoc/eval.html )


Este método de selección está incorporado y bien cubierto en la ayuda de Vim. Cubre etiquetas XML y más.

Ver :help text-objects .


He hecho un plugin vim-textobj-quotes : https://github.com/beloglazov/vim-textobj-quotes

Proporciona objetos de texto para los pares de citas más cercanos de cualquier tipo. Usando solo iq o aq le permite operar con el contenido de comillas simples (''), dobles (") o atrás (`) que actualmente rodean el cursor, están delante del cursor, o detrás (en ese orden de preferencia). En otras palabras, salta hacia adelante o hacia atrás cuando es necesario para alcanzar las comillas.

Es más fácil de entender mirando ejemplos (el cursor se muestra con | ):

  1. Antes: foo ''1, |2, 3'' bar ; después de pulsar diq : foo ''|'' bar foo ''|'' bar
  2. Antes: foo| ''1, 2, 3'' bar foo| ''1, 2, 3'' bar ; después de pulsar diq : foo ''|'' bar foo ''|'' bar
  3. Antes: foo ''1, 2, 3'' |bar ; después de pulsar diq : foo ''|'' bar foo ''|'' bar
  4. Antes: foo ''1, |2, 3'' bar ; después de presionar daq : foo | bar foo | bar
  5. Antes: foo| ''1, 2, 3'' bar foo| ''1, 2, 3'' bar ; después de presionar daq : foo | bar foo | bar
  6. Antes: foo ''1, 2, 3'' |bar ; después de presionar daq : foo | bar foo | bar

Los ejemplos anteriores se dan para comillas simples, el complemento funciona exactamente de la misma manera para comillas dobles (") y atrás (`).

También puede utilizar cualquier otro operador: ciq , diq , yiq , viq , etc.

Por favor, eche un vistazo a la página de github enlazada arriba para más detalles.


Me gustaría añadir un detalle a la respuesta más votada:

Si está utilizando gvim y desea copiar en el portapapeles, use

"+<command>

Para copiar todo el contenido entre paréntesis (o paréntesis o corchetes)

Por ejemplo: "+yi} copiará en el portapapeles todo el contenido entre los corchetes de su cursor.


Para seleccionar dentro de comillas simples use vi'' .

Para seleccionar entre paréntesis use vi( .


Para seleccionar entre las comillas simples, normalmente hago una vi'' ("seleccionar comillas simples internas").

Dentro de un bloque de paréntesis, uso vib ("seleccionar bloque interno")

Dentro de un bloque de llaves puede utilizar viB ("mayúscula B")

Para hacer las selecciones "inclusivas" (seleccione también las comillas, paréntesis o llaves) puede usar a lugar de i .

Puede leer más sobre las selecciones de objetos de texto en el manual, o :help text-objects dentro de vim.


Un simple mapa de teclas en vim resolvería este problema. map viq F ”lvf” hh Este comando anterior mapea viq a las teclas para buscar entre comillas. Reemplace "con cualquier carácter y cree sus mapas de teclado. Pegue esto en vimrc durante el inicio y debería poder usarlo siempre.


Use la tecla de navegación que desee para colocar dentro de los paréntesis, luego puede usar yi( o yi) para copiar todo lo que esté dentro del paréntesis correspondiente. Esto también funciona con corchetes (por ejemplo, yi] ) y llaves. Además de y , también puede eliminar o cambiar texto (por ejemplo, ci) , di] ).

Intenté esto con comillas dobles y simples y parece funcionar allí también. Para sus datos, yo hago:

write (*, ''(a)'') ''Computed solution coefficients:''

Mueva el cursor a la C , luego escriba yi'' . Mueve el cursor a una línea en blanco, pulsa p y obtén

Computed solution coefficients:

Como señaló CMS , esto también funciona para la selección del modo visual, simplemente use vi) , vi} , vi'' , etc.


Use las flechas o hjkl para llegar a una de las expresiones de horquillado, luego v para seleccionar el modo visual (es decir, la selección), luego % para saltar al otro corchete.