Sublime Text 2插件:捕获所选文本

时间:2015-08-25 11:33:29

标签: python sublimetext2 sublime-text-plugin

我正在尝试编写我的第一个 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)

1 个答案:

答案 0 :(得分:2)

ST2 API参考是hereview.sel()会返回RegionSet,这是一个包含每个选择的Region的对象。 Region.aRegion.b是分别指代该地区的开头和结尾的整数。因此,如果您的视图包含

This is some text.

并且您选择了textRegion.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)。