Effectuer la substitution précédente pour une sélection différente avec une seule touche

8

J'ai exécuté la commande suivante

:'<,'>s/2/digit/g

sur le code ci-dessous sélectionné visuellement manuellement:

return _.round(this.getTotalAbs(), 2).toFixed(2);

Et cela a fonctionné comme prévu

return _.round(this.getTotalAbs(), digit).toFixed(digit);

Maintenant, je veux répéter la même commande de substitution sur un autre extrait de code sélectionné manuellement via le mode de sélection visuelle, avec une seule touche (si possible).

WitVault
la source
Vous pouvez taper :'<,puis flèche haut. Il montrera le remplaçant précédent. Êtes-vous d'accord avec les mappages?
SibiCoder
@SibiCoder Je ne veux pas créer de cartographie. Je souhaite utiliser la commande native si elle est disponible dans vim.
WitVault
Vous devrez créer un mappage si vous voulez une seule touche.
Antony

Réponses:

15

Je pense que vous voulez faire @:qui rejoue la dernière commande ex.

Voir :h @:

Notez que cette commande peut être appelée du mode normal et du mode visuel. Dans ce cas également, il n'est pas utile, mais vous pouvez également le préfixer avec un nombre.


Modifier Dans les commentaires @Antony a souligné une commande intéressante: :&( :h :&):

  • & peut être utilisé en mode normal pour répéter la dernière commande de substitution sans ses indicateurs
  • :&& peut être utilisé en mode ex pour répéter la dernière commande de remplacement en gardant les drapeaux.
statox
la source
9
Ou :&&pour répéter la dernière substitution avec les mêmes drapeaux.
Antony
@Antony: Commande cool, je ne le savais pas.
statox