title | author | date | |
---|---|---|---|
Vim中零宽度字符的奇妙之旅 |
Steve Jobsa (史蒂夫乔布丝) |
tsjzadmin@gmail.com |
2023-08-07 |
Draplater:
Hey, Steve Jobsa,我在vim里发现有的行结尾有<200b> <200d>等字符,这些是什么鬼呀?
Steve Jobsa:
哈哈,这个问题吧,跟我来讲讲滴~~
那些神秘的<200b>和<200d>,其实是Unicode中的特殊字符,其中<200b>代表的是zero width space(零宽度空格),<200d>代表的是zero width joiner(零宽度连接符)。零宽度空格,就像它的名字一样,虽然是个空格,但是它是没有宽度的,人眼几乎无法发现它的存在哦^_^,而零宽度连接符则常常用在多个字符组合形成一个新的符号时使用,例如emoji的组合呀!
为啥这些符号会出现在vim里的文本中呢?可能的一个原因就是,这些字符被用于格式控制或者其他一些特定的目的,比如控制换行、或者作为隐藏字符。可能你的文件来源或者某个编辑过程中引入了这些字符。有时候这些字符也可能被恶意利用,用来做一些隐藏信息的传递,就像是数字水印那样呢!
如果你觉得这些字符影响了你的编辑或者阅读,那么你就需要清理一下这些字符喽。在vim中,你可以用以下命令来删除这些字符:
:%s/<200b>//g
:%s/<200d>//g