我怎么能使用每个文件夹的配色方案? (崇高文本3)

时间:2014-09-10 20:18:09

标签: sublimetext sublimetext3 color-scheme

这是我的问题:当为服务器端和客户端编写javascript时,我经常共享方法和/或具有密切的文件名。我希望能够记住上下文,只需要打开文件的背景颜色。因此,我寻找一种方法来告诉sublime文本为服务器文件夹中的文件使用一种颜色方案,另一种方法用于客户端文件夹中的文件:任何关于我如何做到这一点的线索?

我不确定它是否可能,因为它会暗示每个文件夹配置文件我想,但那是我在海里的瓶子...... 谢谢!

2 个答案:

答案 0 :(得分:7)

最简单的方法是使用projects。为客户端文件夹设置项目,为服务器端文件夹设置另一个项目。然后,转到 Project -> Edit Project ,您会看到类似的内容:

{
    "folders":
    [
        {
            "follow_symlinks": true,
            "path": "/home/mattdmo/Projects/js/MySweetApp/server-side"
        }
    ]
}

您可以添加另外两个顶级数组:"settings""build_systems"settings部分可以包含 Preferences -> Settings-User 中的所有内容,包括"color_scheme"

{
    "folders":
    [
        {
            "follow_symlinks": true,
            "path": "/home/mattdmo/Projects/js/MySweetApp/server-side"
        }
    ],

    "settings":
    {
        "color_scheme": "Packages/Neon Color Scheme/Neon.tmTheme"
    }
}

只需编辑您之前制作的.sublime-project个文件,即可添加settings部分和不同的color_scheme选项,您就可以全部设置。


修改

在再次思考这个问题时,我想出了一个使用插件的不同解决方案。使用以下内容创建一个新的Python文件:

import sublime
import sublime_plugin


class ClientServerColorSchemeCommand(sublime_plugin.TextCommand):

    def run(self, edit):
        if "/server/" in self.view.file_name():
            self.view.settings().set("color_scheme", 
                "Packages/User/server.tmTheme")
        elif "/client/" in self.view.file_name():
            self.view.settings().set("color_scheme", 
                "Packages/User/client.tmTheme")


class ClientServerEventListener(sublime_plugin.EventListener):

    def on_load_async(self, view):
        view.run_command("client_server_color_scheme")

确保将"color_scheme"设置调整为您要用于客户端和服务器文件的颜色方案,并随时调整"/server/"和/或"/client/" if/elif 1}}语句,如果你想让它们更具体。如果您使用的是Windows,请将正斜杠/更改为双斜杠\\。将文件另存为Packages/User/client_server_color_scheme.py,其中Packages是选择 Preferences -> Browse Packages... 菜单选项时打开的文件夹。

保存后,事件侦听器将立即启动,并且您打开的包含指定路径的任何文件都将颜色方案设置为您指定的任何颜色方案。来自其他路径的所有其他文件将使用您的默认颜色方案。

请注意,此插件仅适用于ST3。要使其在ST2中有效,请将def on_load_async更改为def on_load

答案 1 :(得分:2)

我修改了MattDMo的解决方案,它适用于最新的Sublime Text 3(build 3143):

import sublime, sublime_plugin
class ColorSchemeByPathCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        settings = self.view.settings()
        if "/test/" in self.view.file_name():
            settings.set('color_scheme', "Packages/User/SublimeLinter/Orange01 (SL).tmTheme")
        else:
            settings.set('color_scheme', "Packages/User/SublimeLinter/Blue01 (SL).tmTheme")
class ColorSchemeByPathEventListener(sublime_plugin.EventListener):
    def on_load_async(self, view):
        view.run_command("color_scheme_by_path")