sublime - 保存所有具有名称的打开/加载文件?

时间:2013-10-22 09:54:57

标签: python sublimetext2

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

我喜欢Sublime如何拥有带有文件名的文件,并且拥有从未保存过的文件,并且可以关闭它并记住无标题文件并重新加载它们而无需我保存它们。 但是当一个文件有一个文件名并且缓冲区中有一些变化尚未保存时,sublime会显示它,文件名和圆圈,我关闭sublime,然后重新打开它,我崇拜它已经重新计算了它,所以变化仍然没有保存到文件中。那太棒了..但是......我想要一个拯救所有人的命令,但不是那些没有命名的命令。

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

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

3 个答案:

答案 0 :(得分:9)

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

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

Sublime Text 2 API Reference

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")

答案 1 :(得分:6)

lhuang的answer非常精彩,完全符合我的想法。请确保将插件另存为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会向您投诉。

保存keymap文件后,您可以通过按 Ctrl Alt Shift S 来触发命令。显然,如果您不喜欢它们,可以更改密钥。如果你选择了一个会产生奇怪行为的组合,请查看@skuroda的FindKeyConflicts插件 - 它对于排除设置进行故障排除非常宝贵,尤其是在开发自己的软件包时。

祝你好运!

答案 2 :(得分:1)

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

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

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