当我按ctrl + shift + F搜索当前范围内的所有文件时,我会看到一个新窗口,列出包含该搜索词的所有文件。
如何快速打开所有这些文件?
答案 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,则可以使用命令行中的grep
和xargs
组合打开包含特定字符串或匹配正则表达式的所有文件这样:
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
,以便在新窗口中打开它们。