api:如何从对象sublime.Selection中获取所选文本

时间:2013-10-31 13:23:44

标签: python plugins sublimetext2 sublimetext sublimetext3

如何在sublime text 3插件中获取所选文字:

import sublime, sublime_plugin

class plugin_window__go_to_relative_plugin__Command(sublime_plugin.WindowCommand):
    def run(self):            
        window = self.window
        view = window.active_view()
        sel = view.sel()
        sublime.status_message("selection: "+sel)

我的代码抛出错误:

     sublime.status_message("selection: "+sel)
TypeError: Can't convert 'Selection' object to str implicitly

view.sel()返回sublime.Selection个对象。但我不知道如何从那里获取选定的文本。

此插件必须如下工作: 当我在视图上调用它时...

sublime text selection

...应将文本"dow = self.w"设置为变量sel

当我str(sel)时,它会返回<sublime.Selection object at 0x1047fd8d0>

Docs对我来说不是很清楚。

3 个答案:

答案 0 :(得分:6)

如果是单一选择:

import sublime, sublime_plugin

class selection_plugin__Command(sublime_plugin.WindowCommand):
    def run(self):            
        print('selection_plugin__ called')
        window = self.window
        view = window.active_view()
        sel = view.sel()

        region1 = sel[0]
        selectionText = view.substr(region1)
        print(selectionText)

答案 1 :(得分:6)

我对文档的含义的理解是这样的:

听起来sel()对象的sublime.View方法返回一个sublime.Selection对象,它是一个区域的容器 - 所以你应该能够迭代它的内容(区域)它包含)或使用[]操作索引它们。

您可以通过调用sublime.Region对象的Selection方法获取substr(region)中与每个sublime.View相关联的文字。这是有道理的,因为这个编辑器允许多个同时选择 - 其中一个较酷的功能,恕我直言。

希望这有帮助。

答案 2 :(得分:1)

在控制台中使用它,然后在python中追加 view.substr((view.sel())[0])