Sublime Text:为每个文件设置语言

Sublime Text: set language for each file

在 Sublime Text (3) 中,我可以 select 词典用于拼写检查。但是,此设置似乎是全局的,而不是基于每个文件的。 当我处理使用不同语言的多个文件时,这很烦人。 我怎样才能让 Sublime Text 记住文件使用的字典?

通常需要根据文件的语法进行设置(一个字典用于javascript文件,另一个字典用于css 个文件等)。您可以使用语法特定设置轻松实现此目标。但有时您需要特定于文件的设置(具有相同语法但设置值不同的文件)。我为您提供两种情况的示例解决方案。

文件特定方式

为了设置view-specific settings(类似于file-specific)你可以写一个插件。这个简单的示例显示了一个输入面板,您可以在其中为打开的文件设置所需的字典。

import sublime, sublime_plugin

class Example(sublime_plugin.TextCommand):
    def run(self, edit):
        """Default dictionary (caption)"""
        defaultDict = 'Packages/Language - English/en_US.dic'
        if self.view.settings().get('spell_check') == True and self.view.settings().get('dictionary') != None:
            defaultDict = self.view.settings().get('dictionary')
        """Show panel to input dictionary name"""
        self.view.window().show_input_panel('Dictionary value (cancel to disable spell check)', defaultDict, self.setDictionary, None, self.disableSpellCheck)

    def setDictionary(self, dictionary):
        """Enables spell check and sets the dictionary (it is associated with the view)"""
        self.view.settings().set('spell_check', True)
        self.view.settings().set('dictionary', dictionary)

    def disableSpellCheck(self):
        self.view.settings().erase('spell_check')
        self.view.settings().erase('dictionary')

Packages>User 中将其另存为 example.py。然后添加一个键绑定并在您聚焦于所需视图时触发它:

{ "keys": ["ctrl+alt+e"], "command": "example" }

请注意,这是特定于视图的,因此如果您关闭 sublime 然后重新打开它,设置将恢复,但如果您关闭文件选项卡,设置将丢失,因此如果您以后打开该文件,则必须重新设置该设置。要添加真正的特定于文件的设置,您需要一个更复杂的插件来扩展 EventListener 并读取文件名以设置语法。

特定于语法的方式

除了默认设置和用户设置外,您还可以使用语法特定设置

假设你想为 javascript 文件设置字典,添加所需的语法特定设置打开 javascript 源文件,然后转到菜单 Preferences>Settings-more>Syntax-specific-user,并在打开的文件中设置设置:

{
    "spell_check": true,
    "dictionary": "Packages/Language - English/en_GB.dic"
}

最后保存,现在你的javascript文件正在使用指定的字典。对其他文件类型重复此过程。

请注意,这不是特定于文件的,而是特定于语法的,所以如果您真的需要不同的字典来处理不同的 javascript 文件(例如),您将需要使用其他方式。