¿Cómo seleccionar entre corchetes (o comillas o quotes) en Vim?


Estoy seguro de que solía haber un plugin para este tipo de cosas, pero ahora que lo necesito, parece que no puedo encontrarlo (naturalmente), así que voy a preguntar agradable y simple.

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

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

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

No me interesan las multilíneas, solo los casos que ocurren en una línea.

Author: Randall, 2009-06-30

9 answers

Use cualquier tecla de navegación que desee obtener dentro de los paréntesis, luego puede usar yi( o yi) para copiar todo dentro de los paréntesis coincidentes. Esto también funciona con corchetes (por ejemplo, yi]) y llaves. Además de y, también puede eliminar o cambiar el texto (p. ej. ci), di]).

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

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

Mueva el cursor a C, luego escriba yi'. Mover el cursor a una línea en blanco, golpear p, y obtener

Computed solution coefficients:

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

 243
Author: Tim Whitcomb,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:10:43

Para seleccionar entre las comillas simples suelo hacer un vi' ("seleccionar comillas simples internas").

Dentro de un bloque de paréntesis, utilizo vib ("select inner block")

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

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

Puede leer más sobre las selecciones de objetos de texto en el manual.

 216
Author: CMS,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-31 17:25:42

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

Véase :help text-objects.

 26
Author: michael,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-31 17:33:04

Para seleccionar entre comillas simples use vi'.

Para seleccionar entre paréntesis use vi(.

 17
Author: Canopus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-31 17:26:54

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

 7
Author: Stobor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-31 17:27:39

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 )

 3
Author: Adrian Panasiuk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-31 17:33:31

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

Si está utilizando gvim y desea copiar al portapapeles, use

"+<command>

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

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

 2
Author: yuriploc,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-09 19:48:35

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

Proporciona objetos de texto para los pares de comillas más cercanos de cualquier tipo. Usando solo iq o aq le permite operar en el contenido de comillas simples ('), dobles ( " ) o hacia 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 llegar a 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 presionar diq: foo '|' bar
  2. Antes: foo| '1, 2, 3' bar; después de presionar diq: foo '|' bar
  3. Antes: foo '1, 2, 3' |bar; después de presionar diq: foo '|' bar
  4. Antes: foo '1, |2, 3' bar; después de presionar daq: foo | bar
  5. Antes: foo| '1, 2, 3' bar; después de presionar daq: foo | bar
  6. Antes: foo '1, 2, 3' |bar; después de presionar daq: foo | bar

Los ejemplos anteriores se dan para comillas simples, el plugin funciona exactamente de la misma manera para comillas dobles (") y de vuelta ( ` ).

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

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

 1
Author: Anton Beloglazov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-04-09 10:05:13

Un simple mapa de teclas en vim resolvería este problema. mapa viq F " lvf " hh Este comando anterior asigna viq a las teclas para buscar entre comillas. Reemplaza " con cualquier personaje y crea tus mapas de teclas. Pega esto en vimrc durante el inicio y deberías poder usarlo cada vez.

 -7
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-07-30 12:53:33