sublimetext3 - 启动时自动加载 Sublime 工作区
问题描述
我在这里发布了一个问题:更容易访问 Sublime 宏
那太棒了,而且效果很好!但还有最后一件事我想不通。如何设置它以便 Sublime 在打开时自动加载保存的工作区?因为我在侧边栏中有我的宏文件夹,但我希望每次启动 Sublime 时都会自动将它放在那里,所以我添加了文件夹并保存了工作区,但是当我关闭 Sublime 时,文件夹消失了,我必须转到 project->open-recent ->我的工作区
有没有办法在启动 Sublime 时自动加载工作区或在启动 Sublime 时自动将文件夹添加到项目中?
解决方案
如果在侧栏中打开了相应的文件夹并且您hot_exit
打开了设置(默认情况下),那么退出 Sublime 并重新启动它应该将文件夹保留在那里,如果它们正在引用单个窗口也应该如此一个项目或工作区。
根据您所在的平台,关闭最后一个窗口与退出 Sublime 不同,这并不罕见,这可能导致 Sublime 在会话中记录退出时没有打开窗口.
但是,根据您对问题的评论,听起来这实际上不是您的问题,而是您希望有一种方法可以将特定文件夹或文件夹添加到新创建的窗口和项目中,以便您的宏文件夹只是始终可用。
这可以通过一个插件来实现,该插件可以适当地调整特定窗口中的文件夹。这可以是半自动化的(更多内容见下文)。这是我们需要的插件:
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
设置中配置的列表中的所有文件夹都将添加到当前窗口,只要它们不存在(否则同一个文件夹会出现多次)。创建新窗口时,如果
auto_add_additional_folders
设置为true
(为了安全起见,代码中默认false
为),则该命令将自动为新窗口执行。
回到上面的帖子,“半自动化”部分是因为为了工作,new_window
必须调用该命令以使事件处理程序能够知道创建了一个新窗口。
如果您使用菜单项或键绑定来创建新窗口,就会出现这种情况,但如果您打开现有项目或工作区,则不会执行该命令。也可以在不使用此命令的情况下创建窗口,例如,如果您在没有窗口的情况下退出 Sublime,它会默认创建一个新窗口,或者在没有窗口的情况下在 MacOS 上单击停靠图标。
因此,根据您使用 Sublime 的方式,您可能希望绑定add_additional_folders
到一个键,以便您可以根据需要手动调用它。AdditionalFolders.sublime-commands
您还可以在您的包中创建一个名为类似的文件User
,其中包含以下内容,以将命令添加到命令面板。您可以调整标题以适应;只要扩展名正确,文件名也不重要。
[
{ "caption": "Add Additional Folders", "command": "add_additional_folders" },
]
最后说明:
尽管此处使用了 API 的名称,但这将适用于所有窗口,即使它们没有与之关联的项目(或者它们只有与之关联的工作区),因为所有窗口都固有地携带项目数据
有人暗示下一个版本的 Sublime 将有额外的事件,使检测新窗口变得更容易。以上覆盖到build 3211;如果您正在阅读本文并且有更新的版本可用,则上述内容可能会变得更智能。
推荐阅读
- powershell - 在命令行上设置公共属性值
- sdn - 在基于 SDN 的网络上返回 N
- java - 如何从Java中的主数据集中提取子数据集
- javascript - 从 Flask 向 PHP 脚本发送 POST 请求
- python - 在 Python str.replace 中以相同的方式处理双引号和单引号?
- postgresql - EXPLAIN ANALYZE QUERY 对测量查询性能有何用处?
- mysql - 我想在mysql中每天重置自动增量值
- pdfbox - 使用现有 pdf 中的书签创建目录
- google-bigquery - BigQuery 中的 GCE RAM 和 CPU 使用率
- linux - 给定一个块设备文件,我如何列出所有相关部分?