如何搜索显示为< 85>的字符。在Vim?

时间:2010-01-18 15:57:52

标签: vim ascii newline replace ebcdic

我有一个从EBCDIC转换为ASCII的文件。在曾经有过新行的地方,现在有的字符显示为< 85>。 (表示单个字符的符号,而不是它看起来的四个字符),整个文件在一行上。我想搜索它们并再次用新行替换它们,但我不知道如何。

我尝试将光标放在一个上并使用*来搜索下一个匹配项,希望它可能显示在我的/搜索历史记录中。那没用。它只搜索了< 85>之后的单词。字符。

我搜索了一些,但没有看到任何明显的东西。

我的目标是构建搜索和替换字符串,如:

:%s/<85>/\n/g   

目前只是给了我:

E486: Pattern not found: <85>  

谢谢!

3 个答案:

答案 0 :(得分:25)

我在谷歌搜索中找到了this post。看起来你应该能够做到:

:%s/\%x85/\r/gc

(在没有提示的情况下忽略c进行替换,首先尝试c以确保它正在执行您希望它执行的操作。)

在vim中,输入:h \%x会提供更多详细信息。除了\%x之外,您还可以将\%d\%o\%u\%U用于十进制,八进制,最多四个和最多八个十六进制字符。

答案 1 :(得分:1)

对于特殊字符搜索,例如对于<80><90><9d>来说是win1252 ... 类型:

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

来自编辑器。

类似地,对于八进制,十进制,十六进制,键入:/\%oYourCode/\%dYourCode/\%xYourCode

答案 2 :(得分:-4)

试试这个::%s/<85>/^M/g

注意:按Ctrl-V然后按M

或者如果您不介意使用其他工具,

awk '{gsub("<85>","\n")}1' file