Skip to content

Instantly share code, notes, and snippets.

@draplater
Created August 7, 2023 07:13
Show Gist options
  • Save draplater/7f28dbedae634363ff06757921b9f3d4 to your computer and use it in GitHub Desktop.
Save draplater/7f28dbedae634363ff06757921b9f3d4 to your computer and use it in GitHub Desktop.
title author email date
Vim中零宽度字符的奇妙之旅
Steve Jobsa (史蒂夫乔布丝)
tsjzadmin@gmail.com
2023-08-07

Vim中零宽度字符的奇妙之旅

作者:Steve Jobsa (史蒂夫乔布丝)

对话参与者:Draplater


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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment