web-dev-qa-db-fra.com

Comment échapper les barres obliques inverses et les barres obliques dans VIM find / search?

Par exemple, si je voulais une recherche et un remplacement par des chaînes contenant des barres obliques en arrière ou en avant, comment cela se ferait-il dans vim? Merci!

Exemples de recherche et remplacement: :%s/foo/bar/g

et si je voulais trouver toutes les occurrences de <dog/> et remplacez-le par <cat\>

83
stormist

De la même manière que vous échappez aux personnages presque partout ailleurs dans les programmes Linux, avec une barre oblique inverse:

:%s/<dog\/>/<cat\\>

Mais notez que vous pouvez sélectionner un délimiteur différent à la place:

:%s@<doc/>@<cat\\>@

Cela vous évite de taper toutes ces barres obliques longues et déroutantes dans des modèles avec une tonne de barres obliques.

De la documentation :

À la place du / qui entoure le modèle et la chaîne de remplacement, vous pouvez utiliser tout autre caractère codé sur un octet, mais pas un caractère alphanumérique, \, " ou |. Ceci est utile si vous souhaitez inclure un / dans le modèle de recherche ou la chaîne de remplacement.

134
Cascabel
%s:<dog/>:<cat>

Vous pouvez remplacer les délimiteurs/s'ils deviennent ennuyeux pour certains modèles.

21
Sarah

Citez-les avec une barre oblique inverse. En outre, il est souvent utile d'utiliser un autre délimiteur en plus de la barre oblique.

 :%s#<dog/>#<cat\\>#

ou si vous devez utiliser une barre oblique comme délimiteur de commande de substitution

 :%s/<dog\/>/<cat\\>/
8
wallyk

La syntaxe est:

:%s/<dog\/>/<cat\\>/g
3
Maurizio Reginelli

Je cherchais quelque chose de similaire, pour rechercher des valeurs de registre contenant le / caractère (pour enregistrer une macro). La solution consistait à rechercher en utilisant le ? jeton au lieu du /.

2
Fernando