【发布时间】:2018-08-18 12:27:35
【问题描述】:
让我们创建要操作的目标文件。
python3
>>> mfile = open("f:/test.txt","wb")
>>> mfile.write(b'\xe3\x80\x80')
3
>>> mfile.close()
现在用xxd打开f:/test.txt,你会在里面看到三个字节\xe3\x80\x80,我们用utf-8编码的目标文件包含三个字节\xe3\x80\x80。
python3
b'\xe3\x80\x80'.decode('utf-8')
'\u3000'
表示test.txt与utf-8编码的三个字节的unicode为3000。
:s/\%u3000/ /g
s/\%u3000/ /g 可以在 vim 中将字节 \xe3\x80\x80 替换为字节 \x20。
问题仍然存在。
:s/\%u3000/\%u20/g
:s/\%u3000/\%x20/g
:s/\%u3000/\x20/g
这里上面三种格式都行不通,为什么\xe3\x80\x80在vim中可以用\%u3000表示,(白空白)不能用\%u20或\%x20或@表示987654341@ ?
可以表达\x20,空白是可打印字符,另外我想用latin-1的nbsp替换\xe3\x80\x80三个字节?
latin-1 编码中的nbsp 表示不间断空格,即不可打印字符,如何在 vim 中编写表达式?
:s/\%u3000/\%ua0/g
:s/\%u3000/\%xa0/g
:s/\%u3000/\xa0/g
他们都不适合这个案子。
【问题讨论】:
标签: vim substitution