web-dev-qa-db-fra.com

Comment choisir entre crochets (ou guillemets ou ...) dans Vim?

Je suis sûr qu'il y avait un plugin pour ce genre de choses, mais maintenant que j'en ai besoin, je n'arrive pas à le trouver (naturellement), alors je vais simplement demander à Nice et simple.

Quel est le moyen le plus simple de choisir entre des crochets, des guillemets ou généralement une liste de caractères correspondants?

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

Par exemple, j'aimerais sélectionner (a), ou Computed solution coefficients:.

La multiligne ne m'intéresse pas, mais uniquement les cas qui se produisent sur une seule ligne.

208
Rook

Utilisez la touche de navigation de votre choix entre les parenthèses, vous pouvez utiliser soit yi( ou yi) pour tout copier dans les parenthèses correspondantes. Cela fonctionne également avec les crochets (par exemple, yi]) et des accolades. En plus de y, vous pouvez également supprimer ou modifier du texte (par exemple, ci), di]).

J'ai essayé cela avec des guillemets simples et doubles et cela semble fonctionner également. Pour vos données, je fais:

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

Déplacez le curseur sur le C, puis tapez yi'. Déplacez le curseur sur une ligne vide, appuyez sur p et obtenez

Computed solution coefficients:

Comme CMS a noté , cela fonctionne également pour la sélection du mode visuel - utilisez simplement vi), vi}, vi', etc.

260
Tim Whitcomb

Pour choisir entre les guillemets simples, je fais habituellement un vi' ("sélectionne les guillemets simples intérieurs").

À l'intérieur d'un bloc de parenthèses, j'utilise vib ("sélection du bloc interne")

Dans un bloc d'accolades, vous pouvez utiliser viB ("majuscule B")

Pour faire les sélections "inclusives" (sélectionnez également les guillemets, les parenthèses ou les accolades), vous pouvez utiliser a au lieu de i.

Vous pouvez en savoir plus sur sélections d’objets texte dans le manuel, ou sur :help text-objects dans vim.

247
CMS

Cette méthode de sélection est intégrée et bien décrite dans l'aide de Vim. Il couvre les balises XML et plus.

Voir :help text-objects.

27
michael

Pour sélectionner entre guillemets simples, utilisez vi'.

Pour sélectionner entre parenthèses, utilisez vi(.

20
Canopus

Utilisez les flèches ou hjkl pour accéder à l’une des expressions entre parenthèses, puis v pour sélectionner le mode visuel (c’est-à-dire la sélection), puis % pour sauter à l'autre support.

7
Stobor

Ecrivez une fonction Vim dans .vimrc en utilisant la fonction intégrée 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
Adrian Panasiuk

J'ajouterais un détail à la réponse la plus votée:

Si vous utilisez gvim et souhaitez copier dans le presse-papiers, utilisez

"+<command>

Pour copier tout le contenu entre parenthèses (ou parenthèses ou accolades)

Par exemple: "+yi} copiera dans le presse-papiers tout le contenu situé entre les accolades de votre curseur.

2
yuriploc

J'ai créé un plugin vim-textobj-quotes: https://github.com/beloglazov/vim-textobj-quotes

Il fournit des objets texte pour les paires de citations les plus proches, quel que soit leur type. En utilisant uniquement iq ou aq, il vous permet de manipuler le contenu des guillemets simples ('), doubles (") ou arrières (`) entourant actuellement le curseur, devant le curseur ou derrière (dans cet ordre de préférence), autrement dit, il saute en avant ou en arrière au besoin pour atteindre les guillemets.

Il est plus facile de comprendre en regardant des exemples (le curseur est montré avec |):

  1. Avant: foo '1, |2, 3' bar; après avoir appuyé sur diq: foo '|' bar
  2. Avant: foo| '1, 2, 3' bar; après avoir appuyé sur diq: foo '|' bar
  3. Avant: foo '1, 2, 3' |bar; après avoir appuyé sur diq: foo '|' bar
  4. Avant: foo '1, |2, 3' bar; après avoir appuyé sur daq: foo | bar
  5. Avant: foo| '1, 2, 3' bar; après avoir appuyé sur daq: foo | bar
  6. Avant: foo '1, 2, 3' |bar; après avoir appuyé sur daq: foo | bar

Les exemples ci-dessus sont donnés pour des guillemets simples, le plugin fonctionne exactement de la même manière pour les guillemets doubles (") et back (`).

Vous pouvez également utiliser n’importe quel autre opérateur: ciq, diq, yiq, viq, etc.

Veuillez consulter la page github liée ci-dessus pour plus de détails.

1
Anton Beloglazov