Les instructions disent: "Ecrivez une commande qui changera tous les caractères" - "en caractères" / "dans chaque ligne commençant par un" F "ou un" C "."
J'ai essayé ceci dans Vim mais j'obtiens E488: caractères de fin Aucune suggestion? Merci.
:%s/^\(F|C\)/\-/\//g
3 Réponses :
Si vous devez utiliser une barre oblique dans votre correspondance ou votre remplacement, il est préférable d'utiliser un autre caractère comme séparateur - une virgule fera l'affaire: % s, /, -, g p >
Ici, vous devez également utiliser une assertion positive de regard en arrière: remplacez tout tiret précédé de tout ce qui commence par F ou C, par une barre oblique. Dans vim, ceci est écrit en utilisant \@<=
:%s,\(^[FCITED.*\)\@<=-,/,g
Plus d'informations: : modèle d'aide p >
La manière traditionnelle de faire faire dans toutes les lignes correspondant dans Vi est d'utiliser une commande : g . Donc, dans votre cas, ce serait:
g/^[FG]/s#-#/#g
Ce qui signifie, effectuez une commande de substitution sur toutes les lignes commençant par un F ou un G . Notez que puisque vous souhaitez utiliser le / comme caractère de remplacement, j'ai utilisé un autre délimiteur #.
Quelle est la différence entre % s et g ?
Avez-vous regardé l'aide? : h: s et : h: g S'il y a quelque chose qui n'est pas clair, veuillez le dire
Solution:
^[FC]: Do replacements only in those lines which start with F or C. \-: Look for - \/: Replace with / gc: Do the replacements interactively. (Change it to g for non-interactive mode).
Explication :
:g/^[FC]/s/\-/\//gc
Merci. Ça a marché. Il semble que je mettais la partie après le s.
c'est la même solution que celle fournie par moi. BTW: vous n'avez pas besoin d'échapper au - .
@ChristianBrabandt J'ai pensé que je donnerais une réponse qui fonctionnera simplement par copier-coller. Oui, le mérite vous revient.