我该如何在使用sublime text 3时添加U+200B字符或删除它们。 我找到了http://pastebin.com/ehWxNfMe,但不确定如何使用它。
我该如何在使用sublime text 3时添加U+200B字符或删除它们。 我找到了http://pastebin.com/ehWxNfMe,但不确定如何使用它。
在Sublime Text中删除零宽度空格的最简单方法是使用搜索和替换功能:
Ctrl + h
(Mac电脑为Alt + Cmd + f
)Alt + r
(Mac电脑为Alt + Cmd + r
)启用正则表达式标志\x {200b}
输入为搜索术语我搜索了一个可以突出显示所有可能破坏代码的字符的插件,但在Sublime Text中找不到,所以我写了一个:https://github.com/TuureKaunisto/highlight-dodgy-chars
该插件采用白名单原则:所有未在设置中列入白名单的非 ASCII 字符都会被突出显示。
如果您想基于自己的正则表达式突出显示内容,则此插件可行:https://github.com/bluegray/Highlighter,并且可以通过软件包管理器轻松安装。
import sublime_plugin
class ShowZeroWidthSpace(sublime_plugin.EventListener):
def on_modified(self, view):
spaces = []
p = 0
while True:
s = view.find(u'\u200b', p + 1)
if not s:
break
spaces.append(s)
p = s.a
if spaces:
view.add_regions("zero-width", spaces, "invalid")
else:
view.erase_regions("zero-width")
将文件保存到您的Packages/User
目录中,命名为show_zero_width_space.py
,然后它应该立即开始工作。它的基本原理是每次修改当前视图时,逐个字符搜索其中的零宽度空格字符U+200B
,如果找到,则将其位置添加到列表中并继续查找直到文件末尾。然后,如果找到任何字符,它们将根据您的主题中的invalid
区域进行高亮显示。一旦高亮显示,它们可以被选择并删除。
由于此插件在每次修改视图时运行(例如,在每次按键后),它有可能会导致Sublime变得非常缓慢,特别是对于大型文件。因此,如果您知道文件已经干净,请将插件重命名为show_zero_width_space.py.old
,并确保删除任何名为show_zero_width_space.pyc
的文件,它就不会起作用了。有关Sublime Text 3特定的解决方法,请参见下面。
Sublime Text 3 API针对EventListener
现在包括一个on_modified_async()
方法,以保持所有ST3函数都是线程安全的事实相一致。这会异步地以非阻塞方式运行代码,因此Sublime不应该被减速。新插件如下:
import sublime_plugin
class ShowZeroWidthSpace(sublime_plugin.EventListener):
def on_modified_async(self, view):
spaces = []
p = 0
while True:
s = view.find('\u200b', p + 1)
if not s:
break
spaces.append(s)
p = s.a
if spaces:
view.add_regions("zero-width", spaces, "invalid")
else:
view.erase_regions("zero-width")
sed -iE "s/$(echo -ne '\u200b')//g" file.txt
- 这是唯一对我有效的方法。 - Amal Murali