9

在 Sublime Text 2 中,我希望能够保存所有打开/加载的具有名称的文件。

我喜欢 Sublime 如何拥有带有文件名的文件,拥有从未保存过的文件,并且可以关闭它,它会记住无标题文件并重新加载它们,而无需我保存它们。但是当一个文件有一个文件名并且缓冲区中的一些更改尚未保存时,sublime 会显示它,带有文件名和圆圈,我关闭 sublime,然后重新打开它,我 sublime 已经按原样记住了它,所以更改仍未保存到文件中。太好了.. 但是.. 我想要一个命令来保存所有的,但不是无标题的。

菜单中有一个全部保存选项,但它会弹出一个对话框,询问有关保存无标题文件的问题。

编写一个命令将无标题保留原样并保存带有文件名的命令将涉及哪些 API 函数?(有没有我可以运行的使用这些 API 函数的示例代码?)

4

3 回答 3

10

AFAIK,打开的文件由一个或多个视图表示。因此,请尝试获取所有视图并使用文件名保存这些视图。我写了一个简单的例子。希望它可以帮助你。

顺便说一句,您可以通过以下链接检查所有 API。

Sublime Text 2 API 参考

import sublime, sublime_plugin

class SaveAllExistingFilesCommand(sublime_plugin.ApplicationCommand):
    def run(self):
        for w in sublime.windows():
            self._save_files_in_window(w)

    def _save_files_in_window(self, w):
        for v in w.views():
            self._save_exiting_file_in_view(v)

    def _save_exiting_file_in_view(self, v):
        if v.file_name():
            if v.is_dirty():
                v.run_command("save")
于 2013-10-22T11:31:00.953 回答
7

lhuang 的回答非常棒,并且完全按照我的想法去做。确保将插件保存为Packages/User/save_all_existing_files.py以使其正常工作。您可以Packages通过Preferences -> Browse Packages...菜单项访问目录。不过,我确实有一些补充可以让你的生活更轻松一些 - 一个菜单项和一个组合键。

您通常不应该编辑Packages/Default目录中的任何内容,因为所有文件都可以被覆盖/扩展,但在这种情况下,为了美观,我推荐它。打开Packages/Default/Main.sublime-menu并在第 128 行之后添加以下行,这应该是save_all菜单项:

{ "command": "save_all_existing_files", "caption": "Save All Named Files", "mnemonic": "F" },

这将在菜单中添加“保存所有命名文件”选项File。接下来,转到Preferences -> Key Bindings - User并添加以下行:

{ "keys": ["ctrl+alt+shift+s"], "command": "save_all_existing_files" },

如果该文件没有任何其他内容,请将上面的行用方括号括起来[ ]并删除尾随的逗号,否则 Sublime 会抱怨你。

保存键盘映射文件后,您可以通过点击来触发命令CtrlAltShiftS。显然,如果你不喜欢它们,你可以改变它们。如果您选择了一个会产生奇怪行为的组合,请查看FindKeyConflicts@skuroda 的插件 - 它对于排除您的设置非常宝贵,尤其是在开发您自己的软件包时。

祝你好运!

于 2013-10-22T14:32:32.847 回答
1

只需将下一行添加到Preferences > Key Bindings - User

{ "keys": ["super+shift+s"], "command": "save_all" }

super是 OS X 中的命令键。ctrl在 Windows 上使用。

于 2014-11-05T20:51:57.273 回答