启动时自动加载 Sublime 工作空间
Automatically loading a Sublime workspace on startup
我在这里发布了一个问题:
这太棒了,而且效果很好!但还有最后一件事我想不通。如何设置它以便 Sublime 在打开时自动加载保存的工作区?因为我在边栏中有我的宏文件夹,但每次启动 Sublime 时我都希望它自动存在,所以我添加了该文件夹并保存了工作区,但是当我关闭 Sublime 时,该文件夹消失了,我必须转到 project->open-recent ->我的工作空间
有没有办法在启动 Sublime 时自动加载工作区或在启动 Sublime 时自动向项目添加文件夹?
如果在边栏中打开了相应的文件夹并且您打开了 hot_exit
设置(默认情况下),那么退出 Sublime 并重新启动它应该会保留该文件夹,并且相同如果个人 windows 引用的是项目或工作区,则应该如此。
运行 关闭最后一个 window 与退出 Sublime 不同的区别并不少见,具体取决于您所在的平台,这可能会导致 Sublime在 session 中记录退出时没有 windows 打开。
然而,根据对您问题的评论,这听起来更像是这实际上不是您的问题,您更希望有一种方法可以将一个或多个特定文件夹添加到新创建的 windows 和项目中相反,这样您的宏文件夹就始终可用。
这可以通过一个插件来实现,它可以根据需要调整特定 window 中的文件夹。这可以 semi-mostly 自动化(更多内容见下文)。这是我们为此需要的插件:
import sublime
import sublime_plugin
class AddAdditionalFoldersCommand(sublime_plugin.WindowCommand):
"""
Adds all of the folders from the `additional_folders` setting in the user
preferences to the current window, if they are not already present there.
"""
def run(self):
# Get the list of folders from the settings
settings = sublime.load_settings("Preferences.sublime-settings")
additional = settings.get("additional_folders", [])
# Get the project data and associated folders from the current window,
# with sensible defaults if the window has no project data yet
project_data = self.window.project_data() or {}
project_folders = project_data.get("folders", [])
# Add in any additional folders that are not already present
for folder in additional:
if not any(o["path"] == folder for o in project_folders):
project_folders.append({"path": folder})
# Update project data
project_data["folders"] = project_folders
self.window.set_project_data(project_data)
class AdditionalFolderListener(sublime_plugin.EventListener):
"""
Listens to see if a new window has been created, and if so add additional
folders if desired.
"""
def on_post_window_command(self, window, command_name, args):
if command_name == "new_window":
settings = sublime.load_settings("Preferences.sublime-settings")
if settings.get("auto_add_additional_folders", False):
window = sublime.active_window()
window.run_command("add_additional_folders")
要使用它,您还需要在 Preferences.sublime-settings
文件中添加一些设置(根据需要更改值):
// When true, the folders in "additional_folders" will be
// automatically added when a new window is created.
"auto_add_additional_folders": true,
// Additional folders to add; these must be absolute paths
"additional_folders": [
"/home/odatnurd/.config/sublime-text-3/Packages/User/macros"
],
这有两件事:
当您 运行 add_additional_folders
命令时,additional_folders
设置中配置的列表中的所有文件夹都将添加到当前 window 只要它们不存在(否则同一个文件夹会出现不止一次)。
创建新的window时,如果auto_add_additional_folders
设置为true
(代码中为了安全默认为false
) , 然后命令将自动执行新的 window.
循环回到上面的 post,其中的 "semi-mostly automated" 部分是因为为了工作,必须调用 new_window
命令以使事件处理程序能够知道创建了一个新的 window。
如果您使用菜单项或键绑定创建新的 window,则会出现这种情况,但如果您打开现有项目或工作区,则不会执行该命令。也可以在不使用此命令的情况下创建 windows,例如,如果您退出没有 windows 的 Sublime,它会默认创建一个新的,或者在没有 [=71= 的 MacOS 上] 然后单击停靠栏图标。
因此,根据您使用 Sublime 的方式,您可能希望将 add_additional_folders
绑定到一个键,以便您可以根据需要手动调用它。您还可以在 User
包中创建一个名为 AdditionalFolders.sublime-commands
的文件,其中包含以下内容,以将命令添加到命令面板。您可以调整标题以适应;只要扩展名正确,文件名也不重要。
[
{ "caption": "Add Additional Folders", "command": "add_additional_folders" },
]
最后的注释:
尽管此处使用了 API 的名称,但它在所有 windows 中都有效,即使他们没有与之关联的项目(或者他们只有一个与它们关联的工作区)因为所有 windows 本身都带有项目数据
有人暗示,下一版本的 Sublime 将有额外的事件,可以更容易地检测新的 windows。以上涵盖了 build 3211;如果您正在阅读本文并且有可用的更新版本,则上述内容可能会变得更智能。
我在这里发布了一个问题:
这太棒了,而且效果很好!但还有最后一件事我想不通。如何设置它以便 Sublime 在打开时自动加载保存的工作区?因为我在边栏中有我的宏文件夹,但每次启动 Sublime 时我都希望它自动存在,所以我添加了该文件夹并保存了工作区,但是当我关闭 Sublime 时,该文件夹消失了,我必须转到 project->open-recent ->我的工作空间
有没有办法在启动 Sublime 时自动加载工作区或在启动 Sublime 时自动向项目添加文件夹?
如果在边栏中打开了相应的文件夹并且您打开了 hot_exit
设置(默认情况下),那么退出 Sublime 并重新启动它应该会保留该文件夹,并且相同如果个人 windows 引用的是项目或工作区,则应该如此。
运行 关闭最后一个 window 与退出 Sublime 不同的区别并不少见,具体取决于您所在的平台,这可能会导致 Sublime在 session 中记录退出时没有 windows 打开。
然而,根据对您问题的评论,这听起来更像是这实际上不是您的问题,您更希望有一种方法可以将一个或多个特定文件夹添加到新创建的 windows 和项目中相反,这样您的宏文件夹就始终可用。
这可以通过一个插件来实现,它可以根据需要调整特定 window 中的文件夹。这可以 semi-mostly 自动化(更多内容见下文)。这是我们为此需要的插件:
import sublime
import sublime_plugin
class AddAdditionalFoldersCommand(sublime_plugin.WindowCommand):
"""
Adds all of the folders from the `additional_folders` setting in the user
preferences to the current window, if they are not already present there.
"""
def run(self):
# Get the list of folders from the settings
settings = sublime.load_settings("Preferences.sublime-settings")
additional = settings.get("additional_folders", [])
# Get the project data and associated folders from the current window,
# with sensible defaults if the window has no project data yet
project_data = self.window.project_data() or {}
project_folders = project_data.get("folders", [])
# Add in any additional folders that are not already present
for folder in additional:
if not any(o["path"] == folder for o in project_folders):
project_folders.append({"path": folder})
# Update project data
project_data["folders"] = project_folders
self.window.set_project_data(project_data)
class AdditionalFolderListener(sublime_plugin.EventListener):
"""
Listens to see if a new window has been created, and if so add additional
folders if desired.
"""
def on_post_window_command(self, window, command_name, args):
if command_name == "new_window":
settings = sublime.load_settings("Preferences.sublime-settings")
if settings.get("auto_add_additional_folders", False):
window = sublime.active_window()
window.run_command("add_additional_folders")
要使用它,您还需要在 Preferences.sublime-settings
文件中添加一些设置(根据需要更改值):
// When true, the folders in "additional_folders" will be
// automatically added when a new window is created.
"auto_add_additional_folders": true,
// Additional folders to add; these must be absolute paths
"additional_folders": [
"/home/odatnurd/.config/sublime-text-3/Packages/User/macros"
],
这有两件事:
当您 运行
add_additional_folders
命令时,additional_folders
设置中配置的列表中的所有文件夹都将添加到当前 window 只要它们不存在(否则同一个文件夹会出现不止一次)。创建新的window时,如果
auto_add_additional_folders
设置为true
(代码中为了安全默认为false
) , 然后命令将自动执行新的 window.
循环回到上面的 post,其中的 "semi-mostly automated" 部分是因为为了工作,必须调用 new_window
命令以使事件处理程序能够知道创建了一个新的 window。
如果您使用菜单项或键绑定创建新的 window,则会出现这种情况,但如果您打开现有项目或工作区,则不会执行该命令。也可以在不使用此命令的情况下创建 windows,例如,如果您退出没有 windows 的 Sublime,它会默认创建一个新的,或者在没有 [=71= 的 MacOS 上] 然后单击停靠栏图标。
因此,根据您使用 Sublime 的方式,您可能希望将 add_additional_folders
绑定到一个键,以便您可以根据需要手动调用它。您还可以在 User
包中创建一个名为 AdditionalFolders.sublime-commands
的文件,其中包含以下内容,以将命令添加到命令面板。您可以调整标题以适应;只要扩展名正确,文件名也不重要。
[
{ "caption": "Add Additional Folders", "command": "add_additional_folders" },
]
最后的注释:
尽管此处使用了 API 的名称,但它在所有 windows 中都有效,即使他们没有与之关联的项目(或者他们只有一个与它们关联的工作区)因为所有 windows 本身都带有项目数据
有人暗示,下一版本的 Sublime 将有额外的事件,可以更容易地检测新的 windows。以上涵盖了 build 3211;如果您正在阅读本文并且有可用的更新版本,则上述内容可能会变得更智能。