我有一个在 Sublime Text 2 中打开文件的别名:
alias sub='/Applications/Sublime\ Text\ 2.app/Contents/MacOS/Sublime\ Text\ 2'
但这会启动 Sublime Text 2 的另一个实例(并恢复我的其他实例中所有打开的文件和文件夹)。
我希望让文件在当前实例中作为选项卡打开,这必须是可能的,因为这就是右击 > 打开方式... > Sublime Text 2做。
知道如何通过命令行执行此操作吗?
答案1
它不起作用的原因是您使用了错误的别名。以下是 Sublime Text 3 的正确别名:
alias subl='/Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl'
这是 Sublime Text 专门为 macOS 提供的别名。它不会阻止执行,并且默认情况下会在已打开文件旁边的选项卡中打开文件。
如果您想了解更多有关别名不起作用的原因,请继续阅读。
OS X 中的应用程序包有一个.app
后缀,但启动时,它们实际上会启动该包中指定的二进制文件Info.plist
。这是您的别名链接到的文件夹中的二进制文件MacOS
。
从 GUI 或通过启动服务(例如通过osascript
或open
)运行应用程序会使 OS X 打开该二进制文件,但同时确保它只启动该应用程序的一个实例。当您直接调用二进制文件时,您会绕过此限制并启动应用程序的另一个实例 - 除非应用程序有措施防止启动两个实例,这通常由 OS X 处理。
此外,还有一个副作用,启动二进制文件将阻止终端执行,直到您退出程序或将其暂停到后台。使用subl
Sublime Text 的内置功能会将控制权返回到您的终端,因为它实际上使用启动服务调用来打开 Sublime 包,而不是仅处理二进制文件MacOS
。
由于您基本上启动了第二个 Sublime Text 实例,它会向您显示它之前打开的文件,因为这是它的默认行为。