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插件,你就能知道当前光标的位置是什么,因为它“删除光标左侧或右侧的一个单词”,所以它必须知道该位置在哪里