如何在所有Sublime Text窗口中按名称查找打开的文件


0

https://stackoverflow.com/questions/20519040/search-in-all-files-in-a-project-in-sublime-text-3这样的答案和Sublime Text 2中打开的标签内的全部搜索告诉我如何搜索打开文件使用+ + FWhere: <open files>

但是当我尝试这个时,它只搜索当前窗口中选项卡打开的文件。如果我打开两个窗口,每个窗口都有10个标签,我在其中一个窗口中使用+ + F,搜索结果告诉我它搜索了10个文件,而不是20个。

现在,如果我打开了十几个窗口,我不想循环遍历每个搜索我想要的文件。(是的,我应该清理我的混乱,但这不是我要问的问题。)

有没有办法在任何打开的窗口中找到一个打开的文件?

我还想按名称(或标题标题,通常是相同的)找到文件,而不是按内容。但是如果我可以搜索所有打开的窗口,我会满足于按内容搜索。


一种选择是将所有窗口中的选项卡合并到一个窗口中(stackoverflow.com/a/43836337/423105)。这并不理想......它首先打败了拥有独立窗户的优势。但至少你可以搜索所有打开的标签。
LarsH

Answers:


1

你可以用一个小包来解决这个问题。这是我的尝试:winfinder在Sublime 3包文件夹中创建一个名为“ ”的文件夹(在Mac上,这将是~/Library/Application Support/Sublime Text 3/Packages/winfinder)。

接下来,main.py使用以下内容在该文件夹中创建一个文件:

import sublime
import sublime_plugin

class WinFindCommand(sublime_plugin.TextCommand):

    def search(self, search_string):
        l = []
        for w in sublime.windows():
            for sh in w.sheets():
                fn = sh.view().file_name()
                if fn is not None:
                    if search_string.lower() in fn:
                        l.append(fn + "\n")
        if len(l) > 0:
            v = sublime.active_window().new_file()
            v.set_name("SearchResults")
            v.run_command("insert",{"characters": str(len(l)) + " matches:\n\n"})
            v.run_command("insert",{"characters": "\n".join(l)})
        else:
            sublime.message_dialog("No match found.")


    def run(self, edit):
        w = sublime.active_window()
        w.show_input_panel("Search text", "", self.search, None, None)

现在我们需要一种方法来调用功能。这是通过创建main.sublime-commands在同一文件夹中命名的文件来完成的。内容如下:

[
    { "caption": "WindowFind: find in window title", "command": "win_find" },
]

用法

如果打开命令选项板并键入“ WindowFind”,则应该看到该命令。按[ENTER],包将提示您在所有窗口的所有选项卡中搜索要搜索的搜索字符串。如果没有匹配项,则会显示一条消息。

如果匹配,将使用搜索结果打开新选项卡名称“SearchResults”:

3 matches:

/Users/your_user/notes/daylog.txt

/Users/your_user/Documents/2018/paychecks.csv

/Users/your_user/source/python/daily_tweets/daily.py

(搜索字符串是“ay”) - 只是在Sublime 3上测试它,有效。谢谢你的想法,这很有帮助!:-)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.