让我们创建要操作的目标文件。
python3
>>> mfile = open("f:/test.txt","wb")
>>> mfile.write(b'\xe3\x80\x80')
3
>>> mfile.close()
现在用f:/test.txt
打开xxd
,您将在其中看到三个字节\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
表示,(空白)不能用{{1 }}或
\%u20
或\%x20
?
\x20
可以表示,白色空格是可打印字符,还有,我想用拉丁文1的
\x20
替换三个字节\xe3\x80\x80
吗?
latin-1编码中的nbsp
表示不间断空格,它是NON PRINTABLE CHARACTERS,如何在vim中编写表达式?
nbsp
他们都不适合这个案子。
答案 0 :(得分:3)
您可以通过按 ctrl + v ,然后按 u ,然后按\xe3\x80\x80
或u3000
字符。对于您的情况3000
(请检查:help i_CTRL-V_digit
),使用4个Unicode字符,因为它是黑色字符,您只能看到一个空格,所以您只能输入:set list
来查看所有的位置拥有该字符,或者将其添加到您的.vimrc
set listchars=tab:▸\ ,eol:¬,trail:·,extends:#,nbsp:.
现在,以与输入字符相同的方式,您可以尝试在命令行中替换它,但是在这种情况下,可以用来输入 ctrl + v 您可以尝试使用命令行窗口(:help cedit
)。
进入命令模式,并在按:
后按 ctrl + f ,它将打开命令行窗口,您可以在其中进入插入模式并输入:%s/
ctrl + v u 3000/ /g
,完成后按Enter以应用命令。
在进入命令行窗口之前先尝试一下,因为使用 ctrl + v 时可能会起作用,而不是使用 ctrl + k (http://vim.wikia.com/wiki/Entering_special_characters)
在图像中,而不是用空格/ /
代替,而是用----
代替,只是为了直观地看到更改。
答案 1 :(得分:0)
1。在vim中编辑文件时如何输入不可打印的字符?
在插入模式下:
1.ctrl+v (ctrl+q if ctrl+v call paste from regitor)
2.input u
3.input the unicode value of non printable characters
4.input enter key
2。如何在vim的ex模式的替代命令中输入不可打印的字符?
例如,要将所有字节\xe3\x80\x80
替换为\xa0
,则所有字节的编码均为utf-8。
1. get the byte's unicode value
`\xe3\x80\x80`'s unicode value is `3000`,
`\xa0`'s unicode value is `a0`.
2.press `:` into ex mode.
3.:s/\%u3000/
4:ctrl+v ua0
do not input enter as above process
5.go on to input `/g`.
6.press enter.