Question Comment réutilisez-vous une sélection de mode visuel?


Souvent, lors de l'édition du code, je sélectionne un bloc en mode visuel et effectue une recherche et remplace le bloc. Après avoir apporté les modifications, cependant, il quitte le mode visuel. Comment faites-vous une nouvelle recherche et remplacez-vous la même sélection?


147
2017-12-10 16:58


origine


Eh bien, j'ai trouvé un moyen, mais c'est un peu encombrant: '<,'> s / old / new / g N'importe comment faire sans avoir à taper le '<,'>? - labyrinth


Réponses:


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


212
2017-12-10 23:59



Impressionnant! @Heptite comment trouver moi-même cette commande avec Stackoverflow? - skywinder
@skywinder: aide gv - Heptite
@Heptite: Je ne suis pas sûr que vous soyez jouable ici, mais cette commande vous montre quoi: gv le fait une fois que vous le savez. Mais si je n'a pas? Apprenez à un (wo) homme à pêcher et tout ça. - Ben Thul
@ BenThul: Je pense que j'ai mal compris la question. Je connais de nombreuses fonctionnalités de Vim simplement en lisant la majeure partie de la documentation au fil du temps, en commençant par ":help". - Heptite
:help select-visual devrait vous conduire au manuel correct à l'intérieur de vim @skywinder. - nwildner


gv est certainement la méthode la plus rapide (utilisez la dernière sélection), mais si vous voulez une région de sélection sauvegardé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écutez la macro dans le registre a). Répétez avec tous 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 marques au lieu de numéros de ligne "codés en dur".


11
2018-03-14 13:26



Pour entrer, vous devez connaître les numéros de ligne. Je pense qu'il est préférable de définir deux marques, puis d'utiliser: 'a,' b pour opérer sur la plage entre elles (ou remplacer 'par des touches si vous voulez une granularité dans une ligne) - sillyMunky
Oui, le truc des numéros de ligne était stupide - je l'ai juste utilisé comme exemple pour créer une macro de sélection. Utiliser une gamme de marques est une idée intéressante si ... - AlexMA


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à besoin d’un enregistrement plus persistant, jetez un oeil sur ce plugin nous travaillons actuellement sur le GitHub.

VisualMarks vous permet de sauvegarder et de restaurer des zones visuellement sélectionnées, 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 pour marquer a, puis

<a

en mode normal pour revenir à cette sélection.


6
2017-10-18 17:39



Wow, ça sonne vraiment cool. Je vais essayer ce plugin! Au fait, ces VisualMarks peuvent-ils persister avec mkview comme vous pouvez le faire avec les marques? - labyrinth
@labyrinth je ne sais pas mkview mais je devine Oui puisque les marques sont enregistrées dans un fichier séparé et .. je vous suggère d'essayer quand même :) Si elles ne persistent pas comme vous le souhaitez, nous serons heureux de recevoir votre demande de fonctionnalité sur GitHub et essayez de le traiter. - iago-lito


Supposons que je veuille remplacer Goodbye par Hello et que le code ci-dessous a été 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 avec Hello

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


0
2017-12-10 17:20



Désolé, ce n'est pas ce que je demandais. Ce que je demande, c'est comment réutiliser la sélection pour faire une autre recherche et remplacer sur la même plage que celle sélectionnée auparavant? - labyrinth
Après le remplacement, vous sortirez du mode visuel. tapez gv et votre mode visuel reviendra à l'état de sélection précédent. - Scott Nguyen