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.