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

时间:2015-06-08 11:12:51

标签: sublimetext3 sublimetext

在Sublime Text(3)中,我可以选择用于拼写检查的字典。但是,此设置似乎是全局的,而不是基于每个文件。 当我处理使用不同语言的多个文件时,这很烦人。 如何实现Sublime Text会记住用于文件的字典?

1 个答案:

答案 0 :(得分:2)

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

特定于文件的方式

为了设置特定于视图的设置(类似于特定于文件),您可以编写插件。这个简单的示例显示了一个输入面板,您可以在其中为打开的文件设置所需的字典。

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

example.py 保存在 Packages> User 中。然后添加一个键绑定并在您关注所需视图时触发它:

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

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

特定于语法的方式

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

假设您要为 javascript 文件设置dictonary,添加所需的语法特定设置,打开 javascript 源文件,然后转到菜单 { {1}} ,并在打开的文件中设置设置:

Preferences>Settings-more>Syntax-specific-user

最后保存,现在您的 javascript 文件正在使用指定的dictonary。对其他文件类型重复进程。

请注意,这不是特定于文件的,而是特定于语法的,因此如果您确实需要针对不同 javascript 文件使用不同的词典(例如),则需要使用其他方式。