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 文件(例如),您将需要使用其他方式。
在 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 文件(例如),您将需要使用其他方式。