2008-12-19 16 views
13

Sous Unix, le ^ vous permet de répéter une commande avec du texte substitué au nouveau texte. Par exemple:Comment répéter une commande avec substitution dans Vim?

csh% grep "stuff" file1 >> Results 
grep "stuff" file1 
csh% ^file1^file2^ 
grep "stuff" file2 
csh% 

Existe-t-il un équivalent Vim? Il y a beaucoup de fois où je me retrouve à éditer des choses mineures sur la ligne de commande encore et encore.

Répondre

5

Il existe 2 façons.

  1. Vous tapez simplement . pour effectuer une relecture exacte de la toute dernière commande (autre que le mouvement). Par exemple, je tape cw puis hello pour remplacer un mot par "bonjour". Après avoir déplacé mon curseur sur un mot différent, j'ai appuyé sur . pour le faire à nouveau.
  2. Pour plus de commandes avancées comme un remplacement, après avoir effectué le Substition, appuyez simplement sur la : touche alors la en flèche, et il remplit votre ligne de commande avec la même commande.
+1

Mais je ne veux pas répéter la commande, je veux répéter une commande (à partir de la ligne de commande) avec un texte légèrement différent. – Whaledawg

+0

Oui, vous pouvez la flèche ^, puis changer n'importe quoi sur la ligne. Je suis désolé, je n'ai pas mentionné cela. – palehorse

9

q: pour entrer dans la fenêtre de ligne de commande (:help cmdwin).

Vous pouvez modifier et réutiliser les commandes ex-style saisies précédemment dans cette fenêtre.

+0

Pas exactement ce que je cherchais, je voulais un moyen plus rapide. Mais c'est vraiment une bonne information car maintenant je pourrais au moins écrire une fonction pour faire ce que je cherche. Merci. – Whaledawg

4

Une fois que vous avez cliqué sur :, vous pouvez taper quelques caractères et une flèche vers le haut pour faire correspondre les caractères que vous avez tapés. par exemple. tapez :set et il remontera à travers vos "ensembles". Cela fonctionne également pour la recherche - il suffit de taper / et flèche vers le haut. Et /abc flèche vers le haut va vous nourrir les chaînes de recherche correspondantes contre-chronologiquement.

27

Spécifiquement pour les substitutions: utilisez & pour répéter votre dernière substitution sur la ligne actuelle du mode normal.

+0

c'est la bonne réponse. – jimh

+0

Cela devrait également être la * réponse acceptée * de cette question. – ecbrodie