Sublime插件中的“查找全部”命令?

时间:2014-06-01 16:26:01

标签: sublimetext2 keyboard-shortcuts sublimetext sublime-text-plugin

我以为会:

window.run_command("find_all", {"pattern": "a"})

找到所有" a"当前缓冲区中的字符(我的意思与使用"查找所有"来自查找面板的效果相同;最后选择缓冲区中的每个" a"字符),但它什么也没做。

(我测试用类似的东西替换它:

window.run_command("move", {"by": "lines", "forward": True})

工作,所以我至少得到了代码的上下文。)

1 个答案:

答案 0 :(得分:1)

根据Sublime Text 2 API docsST3中也一样),find()find_all()sublime.View的方法,所以你应该打电话它们位于view上,而不是window上。这是一个示例插件,用于搜索和选择所有出现的python

import sublime
import sublime_plugin


class HighlightPythonCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        count = 0
        for rgn in self.view.find_all('python'):
            self.view.sel().add(rgn)
            count += 1

        sublime.status_message('Added ' + str(count) + ' regions.')

将其保存在Packages/User目录中后,您可以使用

从控制台( Ctrl `)运行它
view.run_command("highlight_python")

要搜索个字符,请尝试以下版本:

import sublime
import sublime_plugin


class HighlightTripleEqualsCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        search = unichr(0x2261) # your character in hex
        self.view.sel().clear() # clear any existing selections - ideally we'd
                                # save them and reinstate them afterwards...
        count = 0
        for rgn in self.view.find_all(search):
            self.view.sel().add(rgn)
            count += 1

        sublime.status_message('Added ' + str(count) + ' regions.')