web-dev-qa-db-fra.com

Rechercher et remplacer dans VIM résulte en caractères de fin

Voici ce que j'essaie de faire:

%s/Article/<h2>Article</h2>/gi

Malheureusement, chaque fois que j'exécute cette commande via mon éditeur vim, cela dit:

Caractères de fin

Pour atténuer ce qui précède, j'ai exécuté ce qui suit:

%s/\s*\r*$//

Et il s'exécute avec succès, mais lorsque je reviens à la commande de recherche et de remplacement d'origine, il lit à nouveau "Caractères de fin" et n'exécute pas l'opération de recherche et de remplacement.

Qu'est-ce que je fais mal ici?

32
Parijat Kalia

Les "caractères de fin" sont dans votre commande, pas dans votre document.

Vim pense que vous avez terminé la commande à Article</, considère alors h2>/gi comme troisième argument de la commande de substitution. Mais ces caractères ne sont pas tous valides pour le troisième argument, donc cela vous donne l'erreur.

Pour résoudre ce problème, vous devez échapper au / caractère dans votre remplaçant.

%s/Article/<h2>Article<\/h2>/gi
38

De plus, si vous devez souvent utiliser des barres obliques littérales dans vos expressions régulières (chemins de fichier XML/HTML/UNIX) et que vous ne voulez pas vous soucier d'échapper à chaque instance, vous pouvez utiliser un délimiteur différent. Par exemple, en utilisant! au lieu de /:

%s!Article!<h2>Article</h2>!gi

Je suis paresseux et c'est généralement plus facile que d'échapper manuellement aux barres obliques.

27
Charlie Sanders