1
votes

Vim - Erreur E488 - Caractères de fin dans la commande de recherche et de remplacement

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


0 commentaires

3 Réponses :


2
votes

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

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


0 commentaires

4
votes

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 #.


2 commentaires

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



0
votes

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


3 commentaires

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.