2016-07-28 20 views
0

Ich habe eine Zeichenfolge wie dieseVim ersetzen Slashes

"{\"attributes\":[],\\\\"data\":\" 

würde Ich mag entfernen "\" in diesem gesamten Text. Ich benutze diese

%s/\/ g  

aber es scheint nicht zu funktionieren, irgendwelche Vorschläge?

Allerdings, wenn ich tun %s/\\\\/ g

i bekommen

"{\"attributes\":[], g:\\"data\":\" 

Gibt es einen einfacheren Weg, um die Substitution zu sagen, jedes Vorkommen von \ mit leeren Raum

Antwort

2

Ihr erster Versuch, fehlt ein ersetzen Schrägstrich, um den Befehl zu beenden, und Sie müssen den Backslash umgehen, da es ein Regex-Sonderzeichen

ist
"{\"attributes\":[],\\\\"data\":\" 

->

:%s/\\/ /g 

->

"{ "attributes ":[], "data ": " 
+2

warum die Notwendigkeit/g dachte ich, der Befehl war '% s/SearchFor/ReplaceWith g' –

+2

Try': help: s' , der Befehl ist ': [Bereich] s [ubstitute]/{Muster}/{Zeichenkette}/Flags, also hat es immer drei'/'drin. Am Anfang ist das Prozentzeichen der Bereich - jede Zeile. 'g' am Ende ist eine Flagge, eine Option -' global' - es bedeutet "suche und ersetze jedes Spiel, das du auf der Linie finden kannst, anstatt nach dem ersten anzuhalten". Sonst würde es ein "\\" ersetzen und aufhören. – TessellatingHeckler

+1

(off-topic NB. Vim ist Vim, es hat nicht * immer * drei '/' drin, denn wenn du '/' ersetzen willst, würde es kollidieren und verwirrend sein, also statt 's///'Sie können das gleiche Muster mit drei anderen Symbolen verwenden und es wird immer noch funktionieren.':% s $ \\ $ $ g' oder ':% s '\\' 'g') – TessellatingHeckler