找到出现次数最多的行

Find the line with maximum occurrence

我使用 sublime 文本,所以如果我要查找的内容不是 SB 中的原生内容,我需要一个正则表达式来在文档中找到包含某项出现次数最多的行。

例如,如果我的文档包含:

(line 1)    blabla;;bla;bla
(line 2)    blabla;;;bla;;bla
(line 3)    blabla;bla;;;bla

然后我搜索包含最大“;”的行 SB 中正则表达式的结果应该是第 2 行。

感谢帮助!

我花时间写了一个插件来做你想要的。是这样的:

在您的 Packages 目录中创建文件夹 LineMaxOcc。在其中创建两个文件:

文件LineMaxOcc.py:

import sublime, sublime_plugin


class PromptLineMaxOccCommand(sublime_plugin.WindowCommand):

    def run(self):
        self.window.show_input_panel("Search for:", "", self.on_done, None, None)
        pass

    def on_done(self, text):
        self.window.active_view().run_command("line_max_occ", {"text": text} )


class LineMaxOccCommand(sublime_plugin.TextCommand):

    def run(self, edit, text):

        buf = self.view.substr(sublime.Region(0, self.view.size()))

        result = 0
        currentMax = 0

        i = 0
        for line in buf.split("\n"):
            count = line.count(text) 
            if count > currentMax:
                currentMax = count
                result = i
            i += 1

        pt = self.view.text_point(result, 0)

        self.view.sel().clear()
        self.view.sel().add(sublime.Region(pt))

        self.view.show(pt)

和文件 Default.sublime-keymap:

[
    { "keys": ["ctrl+alt+g"], "command": "prompt_line_max_occ" }
]

这应该会立即起作用。

干杯!