如何在使用崇高文本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并且还可以通过Package Manager轻松安装。
以下内容将适用于Sublime Text 2和3。然而,由于稍后讨论的一些问题,在编辑大文件和/或在速度较慢的计算机上,它有可能阻止程序。使用异步方法的Sublime Text 3特定版本位于底部。
在Sublime中打开一个新文件,并将其语法设置为Python。将以下内容粘贴到其中:
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特定版本
用于EventListener
的Sublime Text 3 API现在包括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")