[英]Sublime Text 2 plugin: capture the selected text
我正在尝试编写我的第一个 ST2插件(我也是Python的新手)。 我要做的是捕获当前选定的文本。 到目前为止,这就是我所拥有的。 我以为这会将所有选中的文本保存到text变量中,但是看起来我只捕获了选中项的开始和结束索引。 因此,如果我选择缓冲区中的第一个字符,我的插件回调将显示“ 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参考在这里 。 view.sel()
返回RegionSet
,该对象包含每个选择的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`打开控制台,在打开的文件制作一个或多个选项,然后运行运行
view.run_command("print_selection_text")
从控制台(假设您已将其另存为Packages/User/print_selection_text.py
)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.