Você poderia resolver isso com um pacote pequeno. Aqui está minha tentativa:
crie uma pasta chamada " winfinder
" ao unter a pasta do pacote Sublime 3 (no Mac, isso seria ~/Library/Application Support/Sublime Text 3/Packages/winfinder
).
Em seguida, crie um arquivo main.py
nessa pasta com este conteúdo:
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)
Agora precisamos de uma maneira de invocar a funcionalidade. Isso é feito criando um arquivo chamado main.sublime-commands
na mesma pasta. O conteúdo é o seguinte:
[
{ "caption": "WindowFind: find in window title", "command": "win_find" },
]
Uso
Se você abrir a paleta de comandos e digitar " WindowFind
", deverá ver o comando. Pressione [ENTER] e o pacote solicitará que uma string de pesquisa seja pesquisada em todas as guias de todas as janelas. Se não houver correspondência, uma mensagem será exibida.
Se houver uma correspondência, um novo nome de guia "SearchResults" será aberto com os resultados da pesquisa:
3 matches:
/Users/your_user/notes/daylog.txt
/Users/your_user/Documents/2018/paychecks.csv
/Users/your_user/source/python/daily_tweets/daily.py
(string de busca era "ay") - apenas teste no Sublime 3, funciona. Obrigado pela ideia, isso é útil! : -)