Souvent, lors de la modification de code, je sélectionne un bloc en mode visuel, puis je recherche et remplace le bloc. Après avoir apporté les modifications, cependant, il quitte le mode visuel. Comment faites-vous une nouvelle recherche et de remplacer sur la même sélection?
Vous pouvez resélectionner la dernière zone visuelle sélectionnée avec gv
.
gv
est définitivement la méthode la plus rapide (utilisez 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 toute la méthode 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 ensuite récupérer cette sélection en tapant @a
(exécuter la macro dans le registre a). Répétez l'opération avec les registres, lignes ou sections de lignes que vous souhaitez. Évidemment, si vous apportez des modifications au fichier, la sélection peut également changer, vous pouvez donc envisager d'utiliser des repères au lieu de numéros de ligne "codés en dur".
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 oeil à ce plugin sur lequel nous travaillons actuellement sur le GitHub.
VisualMarks vous permet de sauvegarder et de restaurer des zones sélectionnées de manière visuelle, tout comme vous enregistrez et marquez des emplacements spécifiques dans vos fichiers avec m
. Après l’installation et avec les options par défaut, utilisez:
ma
en mode visuel pour enregistrer votre sélection actuelle afin de marquer a
, puis
<a
en mode normal pour revenir à cette sélection.
Supposons que je souhaite 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 saisirais :s/Goodbye/Hello/
et vim remplacera toutes les instances de Goodbye
par Hello
C'est simplement une combinaison d'expressions régulières et de sélections de mode visuel de vim. Lorsque vous sélectionnez, il devrait remplir automatiquement '<,'>