如何通过应用内python控制台修改sublime text 3文档?
我想对文档的文本应用一些函数。 例如,运行regexp替换,然后将结果文本转换为小写(或者使用提供的工具无法轻松完成的更复杂的示例) 我知道如何使用python实现这一点,因此我可以从python解释器运行一个简单的脚本来加载、修改和保存数据。 然而,这可能会非常烦人,并且考虑到存在一个用于sublime文本的python API,应该有一种方法可以直接运行脚本来修改打开的文档 我还希望避免使用宏,因为这需要我保存一个如何通过应用内python控制台修改sublime text 3文档?,python,sublimetext3,Python,Sublimetext3,我想对文档的文本应用一些函数。 例如,运行regexp替换,然后将结果文本转换为小写(或者使用提供的工具无法轻松完成的更复杂的示例) 我知道如何使用python实现这一点,因此我可以从python解释器运行一个简单的脚本来加载、修改和保存数据。 然而,这可能会非常烦人,并且考虑到存在一个用于sublime文本的python API,应该有一种方法可以直接运行脚本来修改打开的文档 我还希望避免使用宏,因为这需要我保存一个.sublime宏文件,但这类替代解决方案同样受欢迎 如何实现这一点?您可以从
.sublime宏
文件,但这类替代解决方案同样受欢迎
如何实现这一点?您可以从启动脚本,使用并获取整个文件的内容:
contents = self.view.substr(sublime.Region(0, self.view.size()))
在sublime控制台中,符号
视图
表示当前聚焦的视图(文件),而窗口
表示当前窗口
因此,您可以使用方法sublime.View.substr()
将当前选定视图的内容收集为字符串,以便进一步操作:
content=view.substr(sublime.Region(0,view.size()))
或者,如果您愿意,您可以先选择一些文本,然后获取所选内容。本例仅获取第一个选择的内容;如果要同时获取多个选择的内容,请根据需要进行修改
content=view.substr(view.sel()[0])
从这里你可以做任何你想做的事情。您的问题是在完成后将内容放回缓冲区
所有编辑操作都需要跟踪,以便能够撤消更改。因此,底层API需要所有修改缓冲区(插入、追加或替换文本等)的调用来提供edit
对象。然而,这些对象受到严格控制;只有崇高才能代表你创造一个
因此,修改缓冲区的唯一方法是实现自己的TextCommand
,或者通过sublime.View.run_command()
方法利用现有命令
content=view.substr(sublime.Region(0,view.size()))
content=content.replace(“你好”,“你好”)
内容=内容。替换(“再见”、“再见”)
view.run_命令(“全选”)
view.run_命令(“插入”,{“字符”:content})
在这里,我将文本从缓冲区中取出,进行了一些替换,然后通过先选择所有内容,然后再插入新内容,将整个修改后的字符串放回缓冲区
请注意,如果您是通过
TextCommand
执行此操作,则需要在任何地方使用self.view
,而不仅仅是view
查看链接的文档。