Sélectionnez les lignes puis appuyez sur :
pour entrer en mode commande. Vim remplira automatiquement '<,'>
qui limite la plage aux lignes sélectionnées. Pour votre exemple, vous pouvez utiliser l'option :s
pour effectuer l'échange :
:'<,'>s/\(\w\+\), \(\w\+\)/\2, \1/
Cela permettra d'échanger deux mots séparés par une virgule sur chaque ligne de la sélection visuelle.
Vous pouvez également utiliser '<
y '>
comme n'importe quel autre signet ou position de ligne, par exemple dans le cadre d'une commande de mouvement, donc en mode normal d'<
supprimera la position actuelle du curseur jusqu'au début de la première ligne de la sélection visuelle. Les marques restent en vigueur même si le bloc n'est plus mis en évidence visuellement.
Si vous voulez relire une macro enregistrée sur chaque ligne, vous devez exécuter la macro avec la commande :normal
commande. Malheureusement, le :normal
ne fonctionne pas sur une plage de lignes, mais vous pouvez corriger cela avec la commande :global
commande. Celle-ci exécute un :ex
sur chaque ligne qui correspond à une regex, donc vous pouvez faire ceci :
:'<,'>g/^/ norm @a
Explication :
:'<,'> for every line in the visual block
g/^/ on every line that matches the regex /^/ - i.e. every line
norm run in normal mode
@a the macro recorded in a