Python api:如何从对象升华中获取所选文本。选择

Python api:如何从对象升华中获取所选文本。选择,python,plugins,sublimetext2,sublimetext,sublimetext3,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

如何在
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
对象。但我不知道如何从那里获取选定的文本

此插件必须按以下方式工作: 当我在视图中调用它时

。。。它应该将文本“dow=self.w”设置为变量
sel

当我执行
str(sel)
时,它返回


对我来说不是很清楚。

如果是单选:

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)

我对文件含义的理解是:

这听起来像是
sublime.View
对象的
sel()
方法返回一个
sublime.Selection
对象,它是一个区域容器,因此您应该能够迭代其内容(它包含的区域)或使用
[]
操作索引到其中

通过调用
substr(Region)
对象的
substr(Region)
方法,可以在
选择中获取与每个
sublime.Region
相关的文本。这是有意义的,因为这个编辑器允许有多个同时选择它的一个更酷的功能,IMHO


希望这有帮助。

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

您似乎忽略了可能存在多个区域,因此存在多个
selectionText
s。顺便说一句,这不是一个答案,可能应该添加到你的问题中。无论如何,谢谢你,你帮了我很多。对于我的任务,我只需要第一选择。如果你加上答案,我会接受的。很高兴我的评论有帮助——这些文档有点难以理解。也不是说,根据他们的说法,
sublime.Selection
sel()
一样返回“保持排序顺序”,这意味着
sel[0]
只是视图中最早的区域——最靠近顶部的区域——而不是当前光标附近的区域或最后选择的对象。我想如果你看一下
Packages/Default/delete_word.py
pre-made插件,你就能知道当前光标的位置是什么,因为它“删除光标左侧或右侧的一个单词”,所以它必须知道该位置在哪里