Sublime Text 2 插件:捕获选中的文本
Sublime Text 2 plugin: capture the selected text
我正在尝试编写我的第一个 ST2 插件(我也是Python 的新手)。我想要做的是捕获当前 selected 文本。这是我到目前为止所拥有的。我 认为 这会将所有 selected 文本保存到文本变量中,但看起来我只捕获 selection 的开始和结束索引.因此,如果我 select 缓冲区中的第一个字符,我的插件回调将打印“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)
每个选择的 ST2 API 参考是 here. view.sel()
returns a RegionSet
, an object containing the Region
。 Region.a
和 Region.b
分别是表示区域开始和结束的整数。因此,如果您的视图包含
This is some text.
并且你选择了text
,Region.a
就是13,Region.b
就是17。要真正得到一个Region的内容,你需要使用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` 打开控制台,在打开的文件中进行一个或多个选择, 那么 运行ning
view.run_command("print_selection_text")
从控制台(假设您已将其保存为 Packages/User/print_selection_text.py
)。
我正在尝试编写我的第一个 ST2 插件(我也是Python 的新手)。我想要做的是捕获当前 selected 文本。这是我到目前为止所拥有的。我 认为 这会将所有 selected 文本保存到文本变量中,但看起来我只捕获 selection 的开始和结束索引.因此,如果我 select 缓冲区中的第一个字符,我的插件回调将打印“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)
每个选择的 ST2 API 参考是 here. view.sel()
returns a RegionSet
, an object containing the Region
。 Region.a
和 Region.b
分别是表示区域开始和结束的整数。因此,如果您的视图包含
This is some text.
并且你选择了text
,Region.a
就是13,Region.b
就是17。要真正得到一个Region的内容,你需要使用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` 打开控制台,在打开的文件中进行一个或多个选择, 那么 运行ning
view.run_command("print_selection_text")
从控制台(假设您已将其保存为 Packages/User/print_selection_text.py
)。