Comment sélectionner entre parenthèses (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 ne peux pas sembler le trouver (naturellement), donc je vais juste demander gentiment et simplement.
Quelle est la façon la plus facile de sélectionner entre parenthèses, ou entre guillemets, ou généralement une liste de caractères correspondants?
write ( *, '(a)' ) 'Computed solution coefficients:'
par exemple, ici je voudrais sélectionner (a)
, ou Computed solution coefficients:
.
Je ne suis pas intéressé par multiligne, juste les cas qui se produisent sur une seule ligne.
9 réponses
utilisez n'importe quelle clé de navigation que vous voulez obtenir à l'intérieur des parenthèses, alors vous pouvez utiliser soit yi(
ou yi)
pour copier tout ce qui se trouve dans les paren correspondants. Cela fonctionne également avec des crochets (par exemple yi]
) et des accolades. En plus de y
, vous pouvez également supprimer ou modifier le texte (par exemple ci)
, di]
).
j'ai essayé cela avec simple et double-guillemets et il semble fonctionner. Pour vos données, je ne:
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 pour la sélection de mode visuel ainsi - juste l'utilisation vi)
, vi}
, vi'
, etc.
pour sélectionner entre les guillemets simples, je fais habituellement un vi'
("sélectionner les guillemets simples").
dans un bloc entre parenthèses, j'utilise vib
("sélectionner le bloc intérieur")
dans un bloc de bretelles bouclées vous pouvez utiliser viB
("capital B")
pour rendre 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 le text object selections dans le manuel.
cette méthode de sélection est intégrée et bien couverte dans L'aide Vim. Il couvre les balises XML et plus.
voir :help text-objects
.
pour sélectionner entre guillemets, utilisez vi'
.
pour sélectionner entre parenthèses utiliser vi(
.
utilisez les flèches ou hjkl
pour accéder à l'une des expressions entre crochets, puis v
pour sélectionner le mode visuel (sélection), puis %
pour passer à l'autre bracket.
Ecrire une fonction Vim .vimrc utilisant la fonction searchpair
intégrée:
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.
[...]
j'ajouterais un détail à la réponse la plus votée:
si vous utilisez gvim et que vous voulez copier sur le bloc-notes, utilisez
"+<command>
pour copier tout le contenu entre parenthèses (ou entre parenthèses ou entre crochets)
par exemple: "+yi}
copiera dans le presse-papiers tout le contenu entre les crochets que votre curseur est.
j'ai fait un plugin vim-textobj-quotes
: https://github.com/beloglazov/vim-textobj-quotes
il fournit des objets de texte pour les paires les plus proches de citations de n'importe quel type. En utilisant seulement iq
ou aq
il vous permet d'opérer sur le contenu des guillemets simples ('), doubles ( " ), ou en arrière (`) qui entourent actuellement le curseur, sont en face du curseur, ou en arrière (dans cet ordre de préférence). En d'autres termes, il saute en avant ou en arrière quand il le faut pour atteindre les guillemets.
c'est plus facile à comprendre en regardant des exemples (le curseur est montré avec |
):
- avant:
foo '1, |2, 3' bar
; après pressagediq
:foo '|' bar
- avant:
foo| '1, 2, 3' bar
; après pressagediq
:foo '|' bar
- avant:
foo '1, 2, 3' |bar
; après pressagediq
:foo '|' bar
- Avant:
foo '1, |2, 3' bar
; après pressagedaq
:foo | bar
- avant:
foo| '1, 2, 3' bar
; après pressagedaq
:foo | bar
- avant:
foo '1, 2, 3' |bar
; après pressagedaq
:foo | bar
les exemples ci-dessus sont donnés pour les guillemets simples, le plugin fonctionne exactement de la même manière pour les guillemets doubles ( " ) et back ( ` ).
Vous pouvez également utiliser d'autres opérateurs: ciq
, diq
, yiq
, viq
, etc.
, jetez un oeil à la page github lié ci-dessus pour plus de détails.
un simple keymap dans vim résoudrait ce problème. carte viq f "lvf"hh Cette commande ci-dessus place viq sur les touches de recherche entre guillemets. Remplacer " par n'importe quel caractère et créer vos keymaps. Coller ceci dans vimrc pendant le démarrage et vous devriez être en mesure de l'utiliser à chaque fois.