Sublime Text打开包含搜索词的所有文件

时间:2016-10-17 14:20:29

标签: sublimetext2 sublimetext3 sublimetext

当我按ctrl + shift + F搜索当前范围内的所有文件时,我会看到一个新窗口,列出包含该搜索词的所有文件。

如何快速打开所有这些文件?

3 个答案:

答案 0 :(得分:14)

按住搜索结果屏幕中的F4键,它将“导航到下一个匹配项” - 这将导致它打开结果中列出的每个文件。

只是一个小小的注释,如果每个文件获得10个以上的匹配,这个方法会因为速度变慢而开始失败。

答案 1 :(得分:5)

Sublime没有能力开箱即用;然而,插件API让你有能力创建一个插件来相当简单地做这样的事情(取决于你最终希望它如何工作)。

我假设有类似的插件可用,但出于参考目的,这是一个简单的例子:

import sublime
import sublime_plugin

class OpenAllFoundFilesCommand(sublime_plugin.TextCommand):
    def run(self, edit, new_window=False):
        # Collect all found filenames
        positions = self.view.find_by_selector ("entity.name.filename.find-in-files")
        if len(positions) > 0:
            # Set up the window to open the files in
            if new_window:
                sublime.run_command ("new_window")
                window = sublime.active_window ()
            else:
                window = self.view.window ()

            # Open each file in the new window
            for position in positions:
                window.run_command ('open_file', {'file': self.view.substr (position)})
        else:
            self.view.window ().status_message ("No find results")

这提供了一个名为open_all_found_files的命令,可以绑定到一个键,添加到菜单,添加到命令选项板等。

使用sublime具有查找结果的自定义语法以及专用于匹配文件名的作用域的概念,这将收集所有此类区域,然后打开关联的文件。

可以传递可选命令参数new_window并设置为true以在新窗口中打开文件;将其关闭或将其设置为false会在查找结果的同一窗口中打开文件。您当然可以根据需要更改默认值。

答案 2 :(得分:1)

你无法在Sublime Text中做到这一点。

如果您使用的是Linux / UNIX / OSX,则可以使用命令行中的grepxargs组合打开包含特定字符串或匹配正则表达式的所有文件这样:

grep -rlZ "search_str_or_regex" /path/to/search/* | xargs -0 subl

// Command line options (may vary between OSes):
//
// grep -r     Recurse directories
// grep -l     Output only the filenames of the files which contain the search pattern
// grep -Z     Output null terminated filenames
// xargs -0    Input filenames are null terminated
// xargs subl  Sublime Text executable
//
// The combination of -Z and -0 allows filenames containing spaces to be handled

文件将在最近使用的Sublime Text窗口中打开。 <{1}}之后添加-n or --new-window,以便在新窗口中打开它们。

如果您使用的是Windows,请考虑使用GOWCygwin