如何在vi中用8!fifHsgx替换所有出现的字符串zUe * ES33Na?
我尝试使用:%s / zUe * ES33Na / 8!fifHsgx / g,但它说替代模式匹配失败。
我有一种感觉,因为我正在尝试搜索或替换“特殊”字符。
基本上有没有办法指示vi将字符解释为搜索字符而不是特殊字符?
这是用于编辑包含密码的文件。
尝试用AAAAAA之类的简单替换上面的第一个字符串时出现了同样的错误:
:%S / ZUE * ES33Na / AAAAAA /克
所以我感觉*导致错误。
我是否必须逃避*或者我可以以某种方式指示vi不要将其解释为包含特殊字符,例如,用引号括起来的东西?
答案 0 :(得分:3)
使用\
转义字符
:%s/zUe\*ES33Na/8!fifHsgx/g
答案 1 :(得分:2)
是的,它是*
。
在Vi中搜索时,您正在搜索正则表达式。这通常看起来像一个常规字符串(%s/asdf/hjkl
),但它是一个恰好只匹配普通文本的正则表达式。如果您输入的特殊字符用于表示*
或.
之类的字符,则会相应地执行此操作。
你需要做的是用反斜杠将其转义并将其转换为普通字符。
%s/zUe\*ES33Na/8!fifHsgx/g
请注意,只有第一部分受到正则表达式字符的影响,因为用正则表达式替换某些内容是没有意义的。第二部分将所有内容视为普通角色。