如何将 Notepad++ 中的 Windows hosts 文件自动与特定语言关联?

如何将 Notepad++ 中的 Windows hosts 文件自动与特定语言关联?

我希望能够在 Notepad++ 中打开 Windows hosts 文件,并使其自动与编程语言(如 Perl)关联。不幸的是,由于 hosts 文件没有扩展名,我不确定如何执行此操作。

答案1

几年前我就遇到过这个问题,最终找到了一些可行的方法:

  • 首先我拿了一个主机用户语言(这与我使用的不同,但应该可以工作)。将脚本添加到“%appdata%/Roaming/Notepad++”或“Program Files (x86)/Notepad++”中的 userDefineLang.xml 文件中。这将允许手动设置语法突出显示主机文件的语言。

  • 接下来获取并配置Python脚本Notepad++ 的扩展(也可通过插件管理器获取)。安装后,在“插件”下找到它,然后选择“配置...”。在底部的“初始化:”下拉菜单中,选择“ATSTARTUP”,这样当您打开 Notepad++ 时,它将自动启动其启动脚本。

  • 然后我得到了模式行解析器扩展。下载它,然后按照 README 中的说明进行操作。本质上,将内容复制到您的插件文件夹(PythonScript 所在的位置)。然后它让您修改 PythonScript 的“scripts”目录中的“startup.py”,并在其底部添加以下几行:

    import ModelineParser_dll
    import ModelineFoldmethod        # If you want to use the example option to fold based on indent
    import ModelineLanguageDetectors # If you want to use the example language detectors
    ModelineParser_dll.modeline_start()
    

    这包括并启动 Modeline Parser。

  • 最后,您需要告诉 Modeline Parser hosts 文件是什么样子以及如何处理它。为此,请进入 PythonScripts 的“lib”目录并编辑“ModelineLanguageDetectors.py”。在默认的“makefile”条目之后,为您的 hosts 文件添加一些非常类似的内容:

    ModelineParser_dll.modeline_add_preparse(lambda settings, name, path, text:
        fnmatch.fnmatch(name, 'hosts*') and settings.__setitem__('language','hosts')
    )
    

    然后在该文件的末尾,将您的 hosts 文件与我们在第一步中添加的 hosts 用户语言关联起来。在 modeline_add_languages 方法调用的参数中,向字典中添加该语言的条目:

    'hosts': 'Hosts',
    

之后,如果 Notepad++ 已打开,请关闭并重新启动它。重新打开它,然后尝试打开您的 hosts 文件。它应该会自动应用语法高亮。几年前,我找到了一些类似这些说明的内容,但现在无法通过 Google 找到它。功劳主要归功于当时编写它的人。

答案2

如果文件没有扩展名,据我所知,无法将其设置为使用特定应用程序打开,但是如果您之前在 notepad++ 中打开过该文件,则可以将其重新打开,并且它会在文件选项卡下的“打开最近使用的文件”中显示该文档。这通常是我打开没有扩展名的文件的最简单方法。

答案3

  1. 使用 Notepad++ 将文件拖放到编辑器中打开
  2. 选择语言为 Python(语言 > P > Python)。格式化会自动进行。

相关内容