Sublimetext3 升华文本:为每个文件设置语言

Sublimetext3 升华文本:为每个文件设置语言,sublimetext3,sublimetext,Sublimetext3,Sublimetext,在Sublime Text(3)中,我可以选择用于拼写检查的词典。但是,此设置似乎是全局设置,而不是基于每个文件。 当我处理使用不同语言的多个文件时,这很烦人。 我如何才能实现崇高文本记住文件使用哪种词典?通常需要根据文件的语法设置设置(一个用于javascript文件,另一个用于css文件等)。使用特定于语法的设置可以轻松实现此目标。但有时也需要特定于文件的设置(具有相同语法和不同设置值的文件)。我给你们两种情况的示例解决方案 文件特定方式 为了设置查看特定设置(类似于文件特定设置),您可以编

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

通常需要根据文件的语法设置设置(一个用于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 inside Packages>User。然后添加一个键绑定,并在您聚焦到所需视图时触发它:

{ "keys": ["ctrl+alt+e"], "command": "example" }
请注意,这是特定于视图的,因此,如果关闭sublime然后重新打开它,则会恢复设置,但如果关闭“文件”选项卡,则会丢失设置,因此如果以后打开文件,则必须重新设置设置。要添加真正的特定于文件的设置,您需要一个更复杂的插件来扩展EventListener并读取文件名以设置语法

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

假设您要为javascript文件设置命令,要添加所需的特定于语法的设置,请打开javascript源文件,然后转到菜单
首选项>设置更多>特定于语法的用户
,并在打开的文件中设置:

{
    "spell_check": true,
    "dictionary": "Packages/Language - English/en_GB.dic"
}
最后保存它,现在您的javascript文件正在使用指定的命令。对其他文件类型重复此过程


请注意,这不是特定于文件的,而是特定于语法的,因此,如果您真的需要为不同的javascript文件使用不同的词典(例如),则需要使用另一种方法。

谢谢,尽管我确实需要特定于文件的设置,但这对我来说很有趣。如果你知道的话,你能概述一下我如何创建一个插件来实现我的目标吗?很好,特定于视图的插件消除了大部分开销,你的示例插件包含了创建我自己的特定于文件的插件所需的所有代码@塞缪尔,太酷了。如果您愿意,可以在解决方案中添加新答案。