2010-10-21 6 views
2

Je veux remplacer tous cygdrive/e par cygdrive/d en utilisant vim. Mais je ne peux pas obtenir le motif correspondant correctement. Voici ma commande:substitution de chaîne vim

s/cygdrive\/e/cygdrive\/d/g 

cela ne fonctionne pas. Quelqu'un peut-il me montrer ce qui ne va pas?

Merci,

+0

De quoi s'agit-il exactement? – Eltariel

Répondre

2

Votre modèle de recherche et chaîne de remplacement regarder bien.

Assurez-vous que vous êtes en mode ex lorsque vous l'essayez.

donc appuyer sur ESC, puis : puis

%s/cygdrive\/e/cygdrive\/d/g 

Mais si vous voulez tout ce qu'il remplacement dans la ligne courante que vous pouvez faire:

s/cygdrive\/e/cygdrive\/d/g 
-2

Vous devez échapper au caractère spécial comme celui-ci de/cygdrive \/s e/cygdrive \/d/g

+0

Il déclare explicitement qu'il a fait cela dans la question. – Eltariel

+0

Ok, je l'ai manqué .... – Raghuram

3

vim vous permet de spécifier le delimiter. . (Le premier caractère après s est le délimiteur)

s/cygdrive\/e/cygdrive\/d/g 

en utilisant l'argument de plage de lignes .. et # comme délimiteur

ESC: 
:1,$ s#/cygdrive/e#/cygdrive/d#g 
+0

c'est cool. Le symbole # est-il seulement compris par vim ou vi aussi? –

+1

Quel que soit le caractère qui suit la commande de remplacement, on entend le délimiteur par vi, vim, sed, etc. –

+0

@Luc sauf |, \ ou ". –