如何在Vim中搜索显示为"<85>"的字符

19
我有一个从EBCDIC转换为ASCII的文件。在原本应该有新行的地方,现在出现了字符“<85>”(表示单个字符的符号,而不是它所呈现的四个字符),整个文件都在一行上。我想搜索并将所有这些字符替换为新行,但我不知道该怎么做。
我尝试将光标放在其中一个字符上,并使用*搜索下一个出现的位置,希望它会显示在我的搜索历史记录中。但这并没有起作用,它只是搜索了紧随“<85>”字符后的单词。
我在谷歌上搜索了一下,但没有看到任何明显的解决方案。
我的目标是构建一个搜索和替换字符串,例如:
:%s/<85>/\n/g   

目前它只给了我:

E486: Pattern not found: <85>  

1
您可以按下 y<空格> 来复制单个字符。 - Josh Lee
3个回答

26

我在谷歌上搜索到了“在vim中查找和替换非打印字符”。看起来你应该能够执行以下操作:

:%s/\%x85/\r/gc
省略 c 以免提示并进行替换,先尝试使用 c 确保它正在做您想要的事情。在 Vim 中键入 :h \%x 可以获得更多详细信息。除了 \%x 外,还可以使用 \%d\%o\%u\%U 分别表示十进制、八进制、最多四个和最多八个十六进制字符。

2

针对特殊字符搜索,例如win1252编码,对于<80><90><9d>等情况...

/\%u80, \/%u90, /\%u9d ...

来自编辑的话。

同样适用于八进制、十进制、十六进制类型:/\%oYourCode, /\%dYourCode, /\%xYourCode


-4
尝试这个::%s/<85>/^M/g 注意:同时按下Ctrl-V和M键
或者如果您不介意使用另一个工具,
awk '{gsub("<85>","\n")}1' file

换行符不是问题,问题在于<85>。不过还是谢谢。 - Thomas G Henry
"<85>"是单个字符,而不是由<、8、5和>组成的四个字符的字符串。 - Thomas G Henry
回显 '------------------------------------------------------------------------- 开始 ----------------------------------------------------------------------- '<85>binDir=...等等,等等... - Thomas G Henry

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接