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

问题描述 投票:18回答:3

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

我尝试将光标放在一个光标上,然后使用*搜索下一个匹配项,希望它可能会出现在我的/搜索历史记录中。那没有用,它只是搜索<85>字符后的单词。

我搜索了Google,但没有发现明显的内容。

我的目标是建立一个搜索并替换如下字符串:

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

目前哪位给我:

E486: Pattern not found: <85>  
vim ascii newline replace ebcdic
3个回答
25
投票

我在Google搜索中找到了[Find & Replace non-printable characters in vim]。看来您应该能够做到:

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

忽略c进行替换而不提示,请先尝试使用c以确保它正在执行您想要的操作。

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


0
投票

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

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

来自编辑器。

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


-4
投票

尝试::%s/<85>/^M/g

注意:同时按Ctrl-V和M

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

awk '{gsub("<85>","\n")}1' file
© www.soinside.com 2019 - 2024. All rights reserved.