我正在尝试编写我的第一个 ST2插件(我也是Python的新手)。我想要做的是捕获当前选定的文本。这是我迄今为止所拥有的。我思考这会将所有选定的文本保存到文本变量中,但看起来我只是捕获选择的开始和结束索引。因此,如果我选择缓冲区中的第一个字符,我的插件回调会打印" 01"。我想要的是索引0和索引1之间的文本。
import sublime, sublime_plugin
class CopyOnSelectListener(sublime_plugin.EventListener):
def on_selection_modified(self, view):
selections = view.sel()
text = ""
for s in selections:
text += str(s.begin())
if not s.empty():
text += str(s.end())
print(text)
答案 0 :(得分:2)
ST2 API参考是here。 view.sel()
会返回RegionSet
,这是一个包含每个选择的Region
的对象。 Region.a
和Region.b
是分别指代该地区的开头和结尾的整数。因此,如果您的视图包含
This is some text.
并且您选择了text
,Region.a
将为13而Region.b
将为17.要实际获取某个地区的内容,您需要使用view.substr(region)
。以下代码将每个选择的内容打印到控制台:
import sublime_plugin
class PrintSelectionTextCommand(sublime_plugin.TextCommand):
def run(self, edit):
view = self.view
for region in view.sel():
print(view.substr(region))
您可以通过使用 Ctrl `打开控制台来运行它,在打开的文件中进行一个或多个选择,然后运行
view.run_command("print_selection_text")
从控制台(假设您已将其保存为Packages/User/print_selection_text.py
)。