直接在 Sublime 中,默认情况下没有允许您一次打开多个文件的方法。可以通过插件/外部包添加这种功能。据我所知,Package Control 上目前没有类似的东西,但那里有很多包,很可能是隐藏的。
总体而言,编写这样一个插件相当简单,因为 Sublime 完成了大部分繁重的工作,但它需要 Python 知识。比较棘手的部分是弄清楚应该打开哪些文件。
另一方面,Sublime 附带了一个名为 subl 的命令行帮助工具,它与正在运行的 Sublime 副本进行对话并根据需要启动一个。假设它在您的路径上可用,则可以通过这种方式打开特定文件夹中的所有 JavaScript 文件。
tmartin:dart:~> subl *.js
这将在最近激活的 Sublime 窗口中打开所有匹配的文件;你可以包含 -n 告诉 Sublime 它应该先打开一个新窗口并将文件放在那里:
tmartin:dart:~> subl -n *.js
这也适用于文件夹和文件,它将文件夹添加到当前窗口或创建一个打开该文件夹的新窗口。
请参阅subl --help,了解有关其他可用选项的更多信息,包括在确切位置打开文件。
[编辑]
如果您使用的是 Linux 或 MacOS,您可以扩展此技术以打开当前文件夹的子文件夹中的文件,方法有多种。
注意:以下内容不适用于 Windows(至少在标准命令提示符中),因为 Windows 本身不会扩展文件 glob,Sublime 必须这样做本身,它可以用于像 *.js 这样的简单全局,但不能用于包含文件夹的更复杂的全局。
如果您的文件夹结构较浅,则可以在命令行中包含多个术语。例如,如果只有一个目录层深:
tmartin:dart:~> subl -n *.js */*.js
如果有两个目录级别,由于 shell 通配规则,您需要包含另一个术语来匹配它:
tmartin:dart:~> subl -n *.js */*.js */*/*.js
对于除了一两个级别之外的任何内容,这都相当乏味且容易出错,在这种情况下,我建议改用 find 实用程序:
tmartin:dart:~> subl -n `find . -name '*.js'`
这里find 命令在当前文件夹 (.) 中搜索名称与 *.js 匹配的所有文件,它会递归执行此操作。完成后,将结果放入字符串中。请注意,将 glob 包裹在 'single quotes' 中很重要,以告诉 shell 它不应该尝试自行扩展它们。
find 命令周围的反引号告诉 shell 先执行该命令,然后将结果用作subl -n 命令的参数。
查找操作的结果与起始位置相关,因此您也可以在任何地方执行find /Users/tmartin/projects/*.js 之类的操作来查找所有适当的文件。
Windows 没有像这个一样工作的find 实用程序,但是使用一个小批处理文件 kung-fu,您可以创建一个执行相同操作的批处理文件:
@ECHO OFF
IF "%~1" == "" GOTO ERROR
subl -n
FOR /f "usebackq tokens=*" %%a IN (`dir %* /b/s`) DO subl "%%a"
GOTO DONE
:ERROR
ECHO Provide a file glob on the command line.
:DONE
如果有很多文件,这有点不太理想,因为它需要为每个要打开的文件执行一次subl,而不是一次全部传递它们,但我远非批处理文件大师。