在Sublime Text 3中使用新编码保存打开的文件

8
我希望在Sublime Text 3中使用新的字符编码保存多个文件。
我尝试使用以下键盘命令来实现这一点,但没有成功。当我按下组合键时,基本上什么都不会发生。
{
 "keys" : ["ctrl+alt+s"],
 "command" : "save_all", "args" :{"encoding" : "Western (Windows 1252)"}
} 

如果我在控制台中使用sublime.log_commands(True)检查按键绑定,我可以看到按键绑定有效,因为它返回command: save_all {"encoding": "Western (Windows 1252)"}。但是,Sublime Text仍然没有将文件保存为Western (Windows 1252)格式。如果我重新打开文件,它会显示UTF-8。

这是否可能或者我使用的键位绑定可能有问题?

1个回答

13

我猜测save_all命令不支持encoding参数。

你可以使用一个简短的Python代码片段以不同的编码保存所有打开的文件。


对于单次使用,你可以在Sublime的Python控制台中简单地运行以下代码:

[view.run_command('save', { "encoding": "Western (Windows 1252)" }) for view in window.views()]

创建一个快捷键绑定:

  • 打开 工具 菜单
  • 开发人员
  • 新插件...

将新文件的内容替换为以下内容:

import sublime, sublime_plugin

class SaveAllWithEncodingCommand(sublime_plugin.TextCommand):
    def run(self, edit, **kwargs):
        for view in self.view.window().views():
            view.run_command('save', kwargs)

将其保存为save_all_with_encoding.py,并将其放在Packages/User文件夹中(当显示“另存为”对话框时,它应默认保存到此文件夹中...)

那么你的按键绑定应该是这样的:

{
   "keys" : ["ctrl+alt+s"],
   "command" : "save_all_with_encoding", "args" : {"encoding" : "Western (Windows 1252)" }
}

你是怎么知道这个的?这在某种文档中吗?抱歉问这么愚蠢的问题。 - Josepas
太好了,你救了我的一天... 你知道在"encoding" : "xxx"对中所有有效编码值的完整列表在哪里可以获取吗? - WesternGun
1
@FaithReaper 是的,只需使用 https://packagecontrol.io/packages/PackageResourceViewer 来查看“Packages/Default/Main.sublime-menu”文件 - ST支持的所有编码都是“文件->使用编码重新打开”菜单的一部分。 - Keith Hall
这绝对是太棒了。顺便说一下,它也适用于Sublime Text 2。 - Arve Systad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接