在崇高的控制台,符号view
表示当前集中视图(文件),而window
代表当前窗口。
所以,你可以使用plugin API方法sublime.View.substr()
收集当前选择的视图的内容进行进一步操作的字符串:
content = view.substr(sublime.Region(0, view.size()))
或者,如果你愿意,你可以先选择一些文本,然后抢选择的内容。这个例子只抓取第一个选择的内容;如果您想一次获取多个选项的内容,则根据需要进行修改。
content = view.substr(view.sel()[0])
从这里你可以做任何你想要的内容。您的问题是在完成后将内容放回缓冲区。
需要跟踪所有的编辑操作,以使Sublime能够撤消更改。基于这个原因,底层API需要所有调用缓冲区的调用(插入,附加或替换文本等)来提供一个edit
对象。但是这些物体是严格控制的;只有Sublime可以代表您创建一个。
所以修改缓冲区的唯一方法是实现您自己的TextCommand
,或者通过sublime.View.run_command()
方法使用现有的命令。
content = view.substr(sublime.Region(0, view.size()))
content = content.replace("Hello", "Bonjour")
content = content.replace("Goodbye", "Au Revoir")
view.run_command("select_all")
view.run_command("insert", {"characters": content})
在这里,我拉文移出缓冲区,做了一些替换,然后首先选择一切,然后插入新的内容后面把整个修改后的字符串返回到缓冲区。
请注意,如果您是从TextCommand
开始执行此操作,则需要随处使用self.view
,而不仅仅是view
。
[Sublime的Python API](http://www.sublimetext.com/docs/api-reference)有什么问题? – Alexander