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

max*_*ath 4 color-scheme sublimetext sublimetext3

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

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

Mat*_*DMo 7

最简单的方法是使用项目.为客户端文件夹设置项目,为服务器端文件夹设置另一个项目.然后,去Project -> Edit Project,你会看到这样的事情:

{
    "folders":
    [
        {
            "follow_symlinks": true,
            "path": "/home/mattdmo/Projects/js/MySweetApp/server-side"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

您可以添加另外两个顶级数组:"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"
    }
}
Run Code Online (Sandbox Code Playgroud)

只需编辑.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")
Run Code Online (Sandbox Code Playgroud)

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

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

请注意,此插件仅适用于ST3.要使其在ST2中工作,请更改def on_load_asyncdef on_load.