代码之家  ›  专栏  ›  技术社区  ›  barlop Sandeep

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

  •  9
  • barlop Sandeep  · 技术社区  · 11 年前

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

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

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

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

    3 回复  |  直到 11 年前
        1
  •  10
  •   longhua    11 年前

    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")
    
        2
  •  7
  •   Community vonPryz    7 年前

    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会向您投诉。

    保存关键点映射文件后,可以通过点击 Ctrl键 中高音 转移 S 。很明显,如果你不喜欢,你可以换钥匙。如果你选择了一个有奇怪行为的组合,请查看 FindKeyConflicts @skuroda的插件-它对排除设置故障非常宝贵,尤其是在开发自己的软件包时。

    祝你好运

        3
  •  1
  •   Filip Spiridonov Lexi Viripaeff    10 年前

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

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

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