Sublimetext3 使用SublimiteText3,如何打开具有相同名称的所有文件

Sublimetext3 使用SublimiteText3,如何打开具有相同名称的所有文件,sublimetext3,sublimetext,Sublimetext3,Sublimetext,我曾经遇到过这样一种情况:我想查看所有命名相同的文件(例如,所有命名为index.js)的文件 我一次只打开一个…但也许有一种方法我可以一次打开所有的 替代策略 我确实在所有这些文件中找到了一些可搜索的术语,这有助于识别所有文件(至少我希望是这样),而且这似乎比直接从Sublime中重复使用cmd-p…打开文件要容易一些。默认情况下,没有任何方法允许您同时打开多个文件。可以通过插件/外部软件包添加这种功能。据我所知,目前在上没有类似的软件包,但是有很多软件包,它很可能被隐藏起来了 编写这样一个插

我曾经遇到过这样一种情况:我想查看所有命名相同的文件(例如,所有命名为
index.js
)的文件

我一次只打开一个…但也许有一种方法我可以一次打开所有的

替代策略


我确实在所有这些文件中找到了一些可搜索的术语,这有助于识别所有文件(至少我希望是这样),而且这似乎比直接从Sublime中重复使用
cmd-p

打开文件要容易一些。默认情况下,没有任何方法允许您同时打开多个文件。可以通过插件/外部软件包添加这种功能。据我所知,目前在上没有类似的软件包,但是有很多软件包,它很可能被隐藏起来了

编写这样一个插件总体来说相当简单,因为升华完成了大部分繁重的工作,但它需要Python的知识。更棘手的部分是弄清楚应该打开哪些文件

另一方面,升华附带了一个名为
subl
的命令行辅助工具,它与正在运行的升华副本对话,并根据需要启动一个。假设它在您的路径上可用,则可以通过这种方式打开特定文件夹中的所有JavaScript文件

tmartin:dart:~>subl*.js
这将在最近激活的升华窗口中打开所有匹配的文件;您可以包括
-n
,告诉Sublime它应该先打开一个新窗口,然后将文件放在那里:

tmartin:dart:~>subl-n*.js
这也适用于文件夹和文件,这会将文件夹添加到当前窗口,或在文件夹打开时创建新窗口

有关其他可用选项的更多信息,包括在确切位置打开文件,请参见
subl--help


[编辑] 如果您使用的是Linux或MacOS,您可以通过几种不同的方式扩展此技术,以打开当前文件夹子文件夹中的文件

注意:以下内容不适用于Windows(至少在标准命令提示中是这样),因为Windows本身不展开文件全局,而升华必须自己展开文件全局,这可以用于像
*.js
这样的简单全局,但不适用于包含文件夹的更复杂全局

如果具有浅文件夹结构,则可以在命令行中包含多个术语。例如,如果只有一个目录级深度:

tmartin:dart:~>subl-n*.js*/*.js
如果有两个目录级别,则需要包含另一个与之匹配的术语,这是由于shell globbing规则:

tmartin:dart:~>subl-n*.js*/*.js*/*/*.js
对于除一个或两个级别以外的任何级别,这都是相当繁琐且容易出错的,在这种情况下,我建议使用
find
实用程序:

tmartin:dart:~>subl-n`find-名称'*.js'`
在这里,
find
命令会在当前文件夹(
)中搜索名称与
*.js
匹配的所有文件,它会递归执行此操作。完成后,结果将被放入字符串中。请注意,重要的是将glob包装在
的“单引号”
中,告诉shell它不应该尝试自己扩展它们

find
命令周围的倒勾指示shell首先执行该命令,然后将结果用作
subl-n
命令的参数

查找操作的结果与开始位置相关,因此您还可以从任何位置执行类似于
find/Users/tmartin/projects/*.js的操作,以查找所有适当的文件

Windows没有像此工具那样工作的
find
实用程序,但是通过一个小的批处理文件功夫,您可以创建一个批处理文件,该批处理文件执行相同的操作:

@ECHO关闭
如果“%~1”==”转到错误
subl-n
对于(`dir%*/b/s`)中的/f“usebackq令牌=*”%%a,请执行subl“%%a”
好了
:错误
ECHO在命令行上提供一个文件glob。
:完成

如果有很多文件,这就有点次优了,因为它需要对每个要打开的文件执行一次
subl
,而不是一次传递所有文件,但我远非批处理文件大师。

我想你的意思是,你在Sublime中,想要点击一个命令,而不是从控制台启动Sublime并打开它们?有没有办法通过命令行使用Sublime打开所有类似命名的文件?(因为任何一种方法对我都有效)确实存在;见下面我的答案。从Sublime内部,仍然可以通过插件实现,但由于当前API没有公开当前文件索引,因此必须找到合适的文件,这很复杂,因此您必须求助于手动
os.walk()
fnmatch.fnmatch()
或类似工具(您还必须熟悉Python)。当我运行
subl-n*index.js
时,我会得到一个新的升华窗口,其中包含应用程序根目录中的
index.js
文件,但不包含任何其他文件(其他文件嵌套得更深)..我尝试了
subl-n**/*index.js
的差异,但运气不好…
subl-n*index.js*/*index.js
如果您在MacOS或Linux上,应该可以工作。在Windows上,操作系统不会为您展开文件globs,升华必须手动进行,而且显然第二种形式存在问题,因此虽然
*index.js
会展开,但第二种形式不会展开。我知道的唯一方法是使用git bash或类似的.hm.之类的替代命令处理器。仍然无法从
*/*index.js
(来自MacOS)中获取任何深度嵌套的文件。我在回答中添加了一些关于如何执行此操作的更多信息。