193 votes

Comment réutiliser une sélection de mode visuel ?

Souvent, lorsque je modifie du code, je sélectionne un bloc en mode visuel et je fais une recherche et un remplacement sur ce bloc. Cependant, après avoir effectué les modifications, je quitte le mode visuel. Comment effectuer une nouvelle recherche et un nouveau remplacement sur la même sélection ?

295voto

Patrick Klug Points 5320

Vous pouvez re-sélectionner la dernière zone visuelle sélectionnée avec gv .

18voto

AlexMA Points 457

gv est certainement la méthode la plus rapide (utiliser la dernière sélection), mais si vous voulez une région de sélection enregistrée stable (ou plusieurs), vous pouvez toujours créer des macros.

Disons que je veux stocker une sélection de ma méthode actuelle, qui va des lignes 25-35. Je peux créer une macro qui sélectionne la méthode entière en tapant

q    //start recording
a    //use register a
25G  //Go to line 25
V    //visual-line mode
35G  //Go to line 35
q    // stop recording

Je peux alors récupérer cette sélection en tapant @a (exécuter la macro dans le registre a). Répétez l'opération avec tous les registres, lignes ou sections de lignes que vous souhaitez. Il est évident que si vous modifiez le fichier, la sélection peut également changer. Vous pouvez donc envisager d'utiliser des marques au lieu de coder en dur les numéros de ligne.

8voto

iago-lito Points 286

gv fonctionne très bien pour récupérer la dernière sélection. Mais on a parfois besoin d'un peu plus.

Si vous avez déjà eu besoin d'un enregistrement plus persistant, jetez un coup d'oeil à ce plugin sur lequel nous travaillons actuellement sur le GitHub.

VisualMarks vous permet de sauvegarder et de restaurer des zones sélectionnées visuellement, tout comme vous sauvegardez et marquez des emplacements spécifiques dans vos fichiers avec l'option m . Après l'installation, et avec les options par défaut, utilisez :

ma

en mode visuel pour sauvegarder votre sélection actuelle pour marquer a alors

<a

en mode normal pour revenir à cette sélection.

2voto

Denis Khoroshev Points 21

Vim se souvient de la dernière sélection.

Si vous saisissez : en mode visuel, il se remplit automatiquement :'<,'> pour vous afin que vous puissiez continuer à entrer la commande, par exemple

:'<,'>s/old/new/    # (Replace pattern in selected area)

Si vous voulez exécuter une autre commande sur la même sélection visuelle, vous pouvez simplement faire apparaître l'ancienne dans l'historique et la modifier.

:'<,>'s/abc/xyz/    # (This will run the replace command on the same selection area)

Une autre façon de dire à la commande replace et aux autres commandes qui prennent en charge match pattern d'utiliser la sélection précédente est d'ajouter \%V au motif, par exemple

:s/\%Vabc/xyz/      # (Same as above)

Pour plus d'informations, veuillez consulter :help \%V .

Pour sélectionner à nouveau la sélection précédente, utilisez gv .

1voto

Alec Points 21

Supposons que je veuille remplacer Goodbye par Hello et que le code ci-dessous soit sélectionné :

public static void main(String[] args){
    System.out.println("Goodbye World");
}

Je taperais dans :s/Goodbye/Hello/ et vim remplacera toutes les instances de Goodbye con Hello

Il s'agit simplement d'une combinaison des expressions régulières et des sélections en mode visuel de vim. Lorsque vous sélectionnez, il devrait remplir automatiquement '<,'>

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X