Comme la plupart d'entre vous le savent probablement, vous pouvez utiliser %
pour rechercher en avant sur la ligne pour trouver la prochaine paire / accolade / parenthèse appariée et passer à son partenaire correspondant:
|a|rray[index] = value;
" |e| is the cursor; hit %:
array[index|]| = value;
J'espère qu'il existe une clé similaire qui recherche en arrière sur la ligne, par exemple:
array[index] = value|;|
" |;| is the cursor again, hit the key I'm looking for:
array|[|index] = value;
La plupart des commandes vim ont à la fois un arrière et un avant, il semble donc que cela devrait le faire. N'a-t-il pas de partenaire? Si c'est le cas, est-ce parce qu'une fois que c'est sur un personnage jumelé, ils agiraient de la même façon?
vim
keyboard-shortcuts
Kevin
la source
la source
%
non seulement recherche le support apparié sur la même ligne, mais plus loin dans le fichier. Je l'aime particulièrement pour les boucles, etc. dans n'importe quel langage de programme de choix.g%
commande qui semble similaire à ce que vous recherchez.Réponses:
Si vous voulez vraiment rechercher en arrière les caractères correspondants communs, vous pouvez utiliser l'une de ces
vim
commandes spécifiques:[(
... (aller au caractère précédent inégalé(
)[{
... (aller au caractère précédent inégalé{
)Ces deux commandes ont des partenaires avant correspondants:
])
... (aller au prochain)
personnage inégalé )]}
... (aller au prochain}
personnage inégalé )Il existe d'autres commandes similaires pour
#ifdef
et pour les commentaires C.Vous pouvez en trouver plus à l'
vim
aide de la commande:help %
.la source
%
cela va dans les deux sens: trouver le partenaire correspondant. De plus, si à l'intérieur d'un bloc, les commandes ci-dessus trouveront la correspondance appropriée.% trouve le support correspondant. Donc, si vous êtes sur (ou {il recherchera en avant.
Si vous êtes sur un} ou), il effectuera une recherche en arrière.
% n'est pas directionnel, il suffit de trouver le support correspondant.
la source
Je viens d'essayer
:map ^] ^%%
(avec^]
= Ctrl+ v Ctrl+ 5ici, par analogie avec%
= Shift+ 5).Cela fonctionne pour le cas spécifique donné, mais comme il ne recherche pas en arrière à partir du curseur, il choisira toujours la première parenthèse ouverte sur la ligne et laissera votre curseur au début de la ligne s'il ne trouve aucune correspondance. .
C'est une meilleure solution; c'est moche et il y a probablement beaucoup de place pour simplifier, mais je pense que la sémantique est tout à fait juste (ne déplace pas le curseur s'il n'y a pas de paren ouvert, et se déplace vers le premier paren ouvert avant la colonne actuelle).
pour
^]
= Ctrl+ v Ctrl+5^[
= Ctrl+v Esc^M
= Ctrl+v Returnla source
[(
cela fonctionnerait tout aussi bien et ne nécessite pas demap
.