簡體   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