sublime text 这款轻量级文本编辑器,用了四年了,一直非常顺手,提供的插件简直神奇一样的存在。虽然 vscode 提供了基本相同的功能,但是 vscode 太丑了呀,用了一段时间,还是回到了 sublime text 的怀抱。
工作原因,经常需要把一串json文本格式化后查看,此时,安利sublime 的 pretty json
插件,一个快捷键就可以格式化,非常漂亮。因为文本是从其他地方拷贝过来的,不可避免的带着一些换行符,pretty json
居然不能格式化待换行符的文本,此时有一个解决方法:提前把换行替换掉,sublime 提供了正则匹配换行符的功能。此方法可以替换掉换行,后面的格式化json 也能顺理成章地完成。
下面要说但是了。
但是,在做替换换行符之前,可能在做其他的替换操作,比如把 aaaaa 替换为 bbbbb ,这时,就需要在替换页面把 aaaaa 删除,添加 \n,把 bbbbb 删除,再执行替换操作。
这种方式虽然能解决,针对这么一个完全是重复性的工作,居然需要这么多次操作,不能忍。然后就想到自己开发一款属于我自己的插件,来执行这个操作,想想任务可能非常艰巨,搜索之后,发现并没有想象中的困难,参考原文 ,需要一些python 基础,即使看不懂也没有关系,替换掉换行只需要简单几步,下面详细说说。
一、点击编辑器系统菜单上的 Tools->New Plugin
菜单。此时 sulime 会打开一个编辑页面,提供默认的插件样例,我们在此基础上进行修改。保存在下面位置
(OSX): Users/Username/Library/Application Support/Sublime Text 3/Packages
(WIN): C:\Users\Username\AppDataRoaming\Sublime Text 3\Packages
注意把username 换成你自己的用户名
按上述位置保存我们的插件,比我的命名为 deleteNewLine-leon.py
。
Sublime Text会自动扫描这个目录,并加载里面的插件文件。也就是说,放在这个目录下的插件是直接激活启用的。如果你的插件有问题,有错误,Sublime Text加载失败,错误信息会在console窗口里提示。开启console窗口的方法是点击菜单View->Show Console。
默认代码是这样的
import sublime
import sublime_plugin
class ExampleCommand(sublime_plugin.TextCommand):
def run(self, edit):
self.view.insert(edit, 0, "Hello, World!")
可以看到,模板中插件类的类名是ExampleCommand,按Sublime Text插件的规则,这个插件的运行名称就是“example”。我们可以在console里运行这个插件: 在console里输入下面的命令view.run_command(‘example’) 会看到”Hello, World!”字样出现在编辑器里。这说明这个插件已经可以使用了。
分析下这个简单代码,ExampleCommand
表示插件运行时的名称;TextCommand
表示此插件为一个文本操作插件;view.insert
表示在某个位置插入字符。
综合来看,没什么稀奇的东西,就是普通 python 代码而已,另外我们还不知有哪些方法可以使用。但是目前对我们来说这些都不重要,重要的是我们已经能把一个插件走通了。
对于我们替换换行的插件,代码修改为如下
import sublime
import sublime_plugin
class DeletenewlinesCommand(sublime_plugin.TextCommand):
def run(self, edit):
for region in reversed(self.view.find_all("\n")):
if not region.empty():
self.view.replace(edit, region, "")
注意几个点,
- 类名修改了,也就意味着我们需要运行
view.run_command('deletenewlines')
来执行我们的插件; - 加了一个 for 循环,为检查每一行;
- 加了if 判断,提高我们插件的性能;
self.view.insert
修改成了self.view.replace
就是替换;
运行 view.run_command('deletenewlines')
就能发现,我们当前打开的视图里面的换行符,全没了,插件运行成功!
很惊讶,之前每次去除换行辣么麻烦,现在一个简单命令就可以了。下节,我们把插件放入到菜单,并设置一个快捷键,你会发现,原来去除换行只需要一个简单的快捷键操作。
点个在看分享给你的朋友