gpt4 book ai didi

sublimetext2 - 在Sublime Text中设置我自己的语法

转载 作者:行者123 更新时间:2023-12-02 09:36:24 25 4
gpt4 key购买 nike

有时,我使用Sublime Text编写提醒。
对于此任务,我始终使用相同的布局,如下所示:

>Title
>>Subtitle
>>>Comment

> Title
>> ...

其中 >代表制表符

因此,我想知道是否可以为此类文件创建自己的语法高亮显示,标题用一种颜色,副标题用一种颜色,注释用常规颜色显示。

最佳答案

使用.tmLanguage syntax definitions执行语法高亮显示。它们的格式为Apple基于XML的PLIST格式,尽管感谢出色的Sublime插件 PackageDev ,它们可以用JSON或YAML编写,我选择它的原因是它的紧凑性,以及我使用主题将其语法突出显示的事实。 *。

因此,您的语法非常简单。您将具有三个规则:

  • 将单个标签开头的行作为“标题”行匹配
  • 匹配以两个标签开头的行作为“字幕”行
  • 以三个制表符开头的匹配行,即“注释”行。

  • Sublime将以纯文本形式显示其他所有内容。

    在YAML中就是这样:

    # [PackageDev] target_format: plist, ext: tmLanguage
    ---
    name: Reminders
    comment: Written for http://stackoverflow.com/q/25689365/1426065 by @MattDMo
    scopeName: text.reminders
    fileTypes: [todo]
    uuid: 6B548E74-5E01-497A-B030-9D31131B7A70

    patterns:
    - name: text.title.reminders
    match: ^\t(?!\t+)(.*)

    - name: text.subtitle.reminders
    match: ^\t\t(?!\t+)(.*)

    - name: text.comment.reminders
    match: ^\t\t\t(.*)

    一切都非常简单。名称是Sublime右下角显示的名称,它是我写的,其基本作用域名称是 text.reminders,打开带有 .todo扩展名的文件将自动应用此语法,而UUID只是唯一标识符。正如我上面提到的,有三种模式。要记住的一件事: 仅当行以文字制表符开头而不是空格作为制表符时才匹配! 这意味着您需要选择
    View -> Indentation ,并确保未选中 Indent Using Spaces 且未选中。出于很好的考虑,请同时选择 View -> Indentation -> Convert Indentation to Tabs 。这些设置仅可以应用于“提醒” View ,我将在后面介绍。

    因此,我们有了我们的YAML,如果您没有PackageDev,它将毫无用处。但是,将其转换为PLIST会更好:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
    <key>comment</key>
    <string>Written for http://stackoverflow.com/q/25689365/1426065 by @MattDMo</string>
    <key>fileTypes</key>
    <array>
    <string>todo</string>
    </array>
    <key>name</key>
    <string>Reminders</string>
    <key>patterns</key>
    <array>
    <dict>
    <key>match</key>
    <string>^\t(?!\t+)(.*)</string>
    <key>name</key>
    <string>text.title.reminders</string>
    </dict>
    <dict>
    <key>match</key>
    <string>^\t\t(?!\t+)(.*)</string>
    <key>name</key>
    <string>text.subtitle.reminders</string>
    </dict>
    <dict>
    <key>match</key>
    <string>^\t\t\t(.*)</string>
    <key>name</key>
    <string>text.comment.reminders</string>
    </dict>
    </array>
    <key>scopeName</key>
    <string>text.reminders</string>
    <key>uuid</key>
    <string>6B548E74-5E01-497A-B030-9D31131B7A70</string>
    </dict>
    </plist>

    在Sublime中,使用XML语法创建一个新文件,然后将上述XML复制到其中。通过选择Packages来找到Preferences -> Browse Packages...目录,然后将此新文件另存为Packages/User/Reminders.tmLanguage(确保L中的tmLanguage大写)。现在,在Sublime右下角的语言列表中,或者通过 View -> Syntax 菜单选项,应该有一个“用户->提醒”选项。

    但是,还有另一件事要做-着色。为此,您需要修改.tmTheme配色方案文件。由于您使用的是Sublime Text 2(我认为),因此非常简单。打开 Preferences -> Settings-User 并检查"color_scheme"的值。通过选择 File -> Open... 打开配色方案文件,使用导航到您先前找到的Packages目录Preferences -> Browse Packages... ,然后在其所在的任何子目录中打开该文件。例如,如果您的设置文件显示"color_scheme": "Packages/Color Scheme - Default/Monokai.tmTheme",则将导航至Packages/Color Scheme - Default打开文件对话框中的目录,然后打开Monokai.tmTheme。 super 容易。

    现在,您已经打开了配色方案文件,可以根据需要将语法设置为XML,然后一直向下滚动到底部。您需要在
    上方的
    上方插入新的颜色(我将在稍后介绍):

        </array>
    <key>uuid</key>
    <string>06CD1FB2-A00A-4F8C-97B2-60E131912345</string>
    </dict>
    </plist>

    UUID可能甚至不存在,它可能只是说:

        </array>
    </dict>
    </plist>

    无论如何, 始终是文件的最后几行,否则会破坏。无论如何,请在这些行上方插入以下命令:

        <dict>
    <key>name</key>
    <string>Reminders - Title</string>
    <key>scope</key>
    <string>text.reminders text.title.reminders</string>
    <key>settings</key>
    <dict>
    <key>fontStyle</key>
    <string>bold italic</string>
    <key>foreground</key>
    <string>#00FF00</string>
    <key>background</key>
    <string></string>
    </dict>
    </dict>
    <dict>
    <key>name</key>
    <string>Reminders - Subtitle</string>
    <key>scope</key>
    <string>text.reminders text.subtitle.reminders</string>
    <key>settings</key>
    <dict>
    <key>fontStyle</key>
    <string></string>
    <key>foreground</key>
    <string>#FF0080</string>
    <key>background</key>
    <string></string>
    </dict>
    </dict>
    <dict>
    <key>name</key>
    <string>Reminders - Comment</string>
    <key>scope</key>
    <string>text.reminders text.comment.reminders</string>
    <key>settings</key>
    <dict>
    <key>fontStyle</key>
    <string></string>
    <key>foreground</key>
    <string></string>
    <key>background</key>
    <string></string>
    </dict>
    </dict>

    随意定制 foregroundbackground的颜色以及 fontStyle属性(“粗体”和“斜体”是唯一的工作值)即可。

    如果您还记得的话,还有一件事-将Sublime设置为仅在“提醒” View 中使用选项卡。使用JSON语法或如果您安装了 PackageDev,并使用“Sublime Settings”语法创建一个新文件。添加以下内容:

    {
    "translate_tabs_to_spaces": false,
    "extensions":
    [
    "todo"
    ]
    }

    (是的,我知道语言定义中已经包含“todo”,我只是想保持安全)。您可以在此处添加 Preferences -> Settings-Default ... -> Settings-User 文件中使用的任何其他选项,只需确保该文件有效 JSON即可。将文件另存为 Packages/User/Reminders.sublime-settings

    就是这样!您可能需要重新启动Sublime才能使更改生效,但是一切就绪。概括地说,进行新语法定义的步骤如下:
  • 获取 PackageDev ,您的生活会轻松很多。
  • 使用Oniguruma regex语言以JSON或YAML格式编写突出显示的正则表达式,并使用Rubular之类的工具在线测试(使用Ruby 1.9.2选项)。
  • 编译为PLIST/XML。
  • 修改新范围的配色方案。
  • 为制表符之类的特定于语法的设置创建.sublime-settings文件。
  • ???
  • 利润!


  • *如果您有兴趣,请在我的用户个人资料中链接...

    关于sublimetext2 - 在Sublime Text中设置我自己的语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25689365/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com