【问题标题】:Is it possible in Notepad++ to associate a file extension with a dot in it?Notepad ++中是否可以将文件扩展名与其中的点相关联?
【发布时间】:2013-11-29 22:09:15
【问题描述】:

我真的在尝试关联各种.erb 文件类型。我希望能够将.css.erb 和.scss.erb 与CSS、.html.erb 与HTML 以及.js.erb 与JavaScript 相关联。将所有 .erb 文件与 HTML 相关联对于 HTML 文件本身来说很好,但对于 JavaScript、CSS 或 SCSS 来说效果不佳。

我已尝试将css.erb 等放入样式配置器对话框的“用户分机:”框中,但它似乎无法正确接收文件。

我怀疑这是可能的,因为我认为引擎从最后一个 . 匹配到文件名的末尾,而不是像 filename.endswith(ext) 这样的东西,但我认为值得询问是否有人已经找到了让它发挥作用的方法。

有什么想法吗?

【问题讨论】:

  • 你是对的。我尝试手动更改langs.xml,结果和你一样。
  • Windows 中的扩展是最后一个点及以后,因此除非 Notepadd++ 不使用本机扩展返回函数,或者使用从末尾向后到第一个点的正则表达式,否则它不会工作
  • @nrathaus 取一个给定的文件名并不难,就像我提到的,用.endswith(ext) 或类似的东西进行测试。我认为在这种情况下使用正则表达式是完全错误的,我真的希望 npp 不使用正则表达式来测试它们的文件扩展名。
  • 他们不使用正则表达式,如果您愿意,您可以为他们提供补丁并改进他们的代码,您知道它是开源的。你也可以编译你自己的版本。
  • 不幸的是,这不起作用,将 .ext.in 默认设置为 .ext 会很好。现在我每次打开一个语言时都会选择语言。

标签: ruby-on-rails notepad++ erb


【解决方案1】:

一般来说,这是不可能的(除非有人为它编写/已经编写了插件);输入的扩展名仅与您找到的最后一个点之后的文件名部分匹配。

因此,如果您输入包含点的扩展名,很遗憾,它与具有双扩展名的文件不匹配。但输入的包含点的扩展名有一个单独的行为,在某种程度上可能有用:它们匹配整个文件名。

我在为todo.txt format 使用用户定义语言时发现了这一点。用户定义的语言specifies the extension astodo.txt,它确实匹配命名为todo.txt的文件。

我对您的问题很感兴趣,因为我希望其他文件也使用这种语言突出显示。例如。我将done.txt 重命名为done.todo.txt 并创建了projects.todo.txt、2021.todo.txt 之类的文件,希望他们会使用todo.txt 语言突出显示,但正如您所发现的,它不起作用。

但由于我只有有限数量的此类文件名,知道它可以匹配整个文件名仍然对我有所帮助;我只是添加了额外的扩展,例如done.txt、projects.txt、2021.todo.txt 等,对于我将使用的所有文件名。它仍然是一个笨重的解决方案,我希望有一种方法来匹配所有以 .todo.txt 结尾的文件并相应地命名我的文件;但它现在有效,比每次重新打开文件时都选择语言要好。 (我本可以删除.txt 部分并使用.todo 作为扩展名作为更简单的解决方案,但我想保留.txt 以便其他程序继续将它们识别为文本文件。)

在您的情况下,此解决方案不太有用,因为您可能有无数以.css.erb 和.html.erb 结尾的不同文件名。但是,如果有您经常处理的文件 (currentproject.css.erb),或者有常见的文件名 (比如 index.html.erb),那总比没有好。您可以只添加每个文件名,这样您就可以避免至少在这些文件上手动选择语言。

【讨论】:

    【解决方案2】:

    使用以下流程:

    • 打开一个新文件
    • 输入想要的内容
    • 使用 File=>Save 将其保存为所需的 MIME 类型,例如 foo.css 用于 CSS
    • 使用 File=>Save As 将其再次保存为所需的 ERB 文件扩展名,例如 foo.css.erb

    使用Style Configurator 后,我在安装Notepadd++ 可执行文件的文件夹中的stylers.xml 文件中有以下内容:

    <LexerType ext="css.erb" desc="CSS" name="css">
    
    <WordsStyle name="DEFAULT" fontSize="" fontStyle="0" fontName="" bgColor="FFFFFF" fgColor="000000" styleID="0"/>
    
    <WordsStyle name="TAG" fontSize="" fontStyle="0" fontName="Batang" bgColor="FFFFFF" fgColor="0000FF" styleID="1"/>
    
    <WordsStyle name="CLASS" fontSize="" fontStyle="0" fontName="" bgColor="FFFFFF" fgColor="FF0000" styleID="2"/>
    
    <WordsStyle name="PSEUDOCLASS" fontSize="" fontStyle="1" fontName="" bgColor="FFFFFF" fgColor="FF8000" styleID="3"/>
    
    <WordsStyle name="UNKNOWN_PSEUDOCLASS" fontSize="" fontStyle="0" fontName="" bgColor="FFFFFF" fgColor="FF8080" styleID="4"/>
    
    <WordsStyle name="OPERATOR" fontSize="" fontStyle="1" fontName="" bgColor="FFFFFF" fgColor="000000" styleID="5"/>
    
    <WordsStyle name="IDENTIFIER" fontSize="" fontStyle="1" fontName="" bgColor="FFFFFF" fgColor="8080C0" styleID="6" keywordClass="instre1"/>
    
    <WordsStyle name="UNKNOWN_IDENTIFIER" fontSize="" fontStyle="0" fontName="" bgColor="FFFFFF" fgColor="000000" styleID="7"/>
    
    <WordsStyle name="VALUE" fontSize="" fontStyle="1" fontName="" bgColor="FFFFFF" fgColor="000000" styleID="8"/>
    
    <WordsStyle name="COMMENT" fontSize="" fontStyle="0" fontName="" bgColor="FFFFFF" fgColor="008000" styleID="9"/>
    
    <WordsStyle name="ID" fontSize="" fontStyle="1" fontName="" bgColor="FFFFFF" fgColor="0080FF" styleID="10"/>
    
    <WordsStyle name="IMPORTANT" fontSize="" fontStyle="1" fontName="" bgColor="FFFFFF" fgColor="FF0000" styleID="11"/>
    
    <WordsStyle name="DIRECTIVE" fontSize="" fontStyle="0" fontName="" bgColor="FFFFFF" fgColor="0080FF" styleID="12"/>
    
    </LexerType>
    

    您可以通过从 stylers.model.xml 复制模型并遵循模式来为 erb 的每个变体添加更多内容。

    参考文献

    【讨论】:

    • 至少对我来说,这是行不通的;一旦它被保存为*.css.erb,它就会失去语法高亮(用 N++ v6.9.2 测试)
    • @kenbellows 我再次测试并添加了屏幕截图。
    • 根据我的经验,只要文件打开,它只会保持其语法突出显示。如果您关闭该文件并再次打开它,或打开另一个 .css.erb 文件,则不会保留其语言关联。此解决方案与使用语言菜单手动选择语法具有相同的效果;只要文件打开,它就会保持突出显示(即使跨会话,iirc),但如果你关闭它,你就会失去关联。
    • @kenbellows 做了一个little digging 并用永久解决方案更新了答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-26
    • 1970-01-01
    • 1970-01-01
    • 2011-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多