繁体   English   中英

Sublime Text 2插件:捕获所选文本

[英]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.aRegion.b是分别指该区域开始和结束的整数。 因此,如果您的视图包含

This is some text.

并且您选择了textRegion.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM