我在 Notepadd ++ 中使用 Unix .sh文件时遇到以下问题:
如果整个文档的内容用heredoc命令包装,则整个文档将以一种颜色着色。例如:
**<< 'EOF0'**
Content of the document --- All of which will be dyed in a single color.
**EOF0**
Run Code Online (Sandbox Code Playgroud)
当使用很长的脚本时,由于一个(heredoc)命令,所有内容都以一种单一颜色着色,这可能会很烦人,当您知道在一天结束时,使用多个命令会更舒服-color 文档,就像没有此命令一样。
我试图去Settings > Style configurator > Language --- Bash那里以某种方式完全删除 HERE DELEM && HERE Q,但我在 GUI 中没有找到这样的方法。
如何从 Notepad++ 中删除这两种样式(或任何其他样式),以便它们不会影响 .sh 文档中文本的颜色?(在我的例子中是 .sh 文件)?
我只是不让这样的包装器(heredocs 是文本包装器)以任何颜色着色...我只是想完全删除它们的“本机”Notepad++ 风格...
您试图实现的目标格式化样式并不容易实现(但是,是的,以更困难的方式是可能的),但您也可以通过一个简单的技巧来解决您的问题。我在这里讨论两者。
为什么它不能直接实现:
如果您转到Notepad++Windows 中的目录,您将找到一个名为SciLexer.dll. 该文件是根据 Notepad++ 的原始源代码构建的。Bash代码检测命令的方式heredoc硬编码在此文件内。并且该文件不能由用户直接编辑。
那么如何编辑SciLexer.dll:
我们知道这Notepad++是一个开源软件,我们可以SciLexer.dll根据他们给定的源代码自己构建。但要做到这一点,一个人应该对编程语言有很好的了解,否则他可能会把所有这些事情搞砸。在这里您可以找到完整的源代码Notepad++以及SciLexer.dll如何构建它们的详细说明。因此,如果您对编程有很好的了解,您一定可以在那里阅读他们的教程,您会LexBash.cxx在scintilla>lexers目录中找到一个名为的文件,您可以编辑该文件以删除heredoc检测部分并根据该教程重建文件。最后你会得到新的SciLexer.dll。SciLexer.dll如果您将其替换为目录中的当前内容Notepad++,它将像魅力一样发挥作用。
现在的问题是,如果由于缺乏编程知识或时间不够而无法完成所有这些事情,那么还有其他方法吗!!!!可能不是,但我找到了一个技巧,您可以用它来部分解决您的问题。
它会像你想象的那样工作吗:
正如你所说:
我试图去
Settings > Style configurator > Language --- Bash那里以某种方式完全删除 HERE DELEM && HERE Q,但我在 GUI 中没有找到这样的方法。
显然,在 GUI 中没有选项可以删除这些属性,但我们可以删除这些属性。为此,在 Windows 中您必须转到此目录:
%AppData%\Notepad++(将目录复制粘贴到 Windows 资源管理器地址栏)
在该目录中您将找到一些xml文件。我们需要的是stylers.xml. 因此,请使用Notepad++或其他好的文本格式和编辑工具找到并打开它,因为默认的 Windows 记事本会弄乱格式。在该文件中搜索bash. 你会发现类似这样的东西:

这些是文件内样式的所有属性Bash。最后两行描述了HERE DOC. 因此,您可能会考虑删除这些行并保存文件。这样,您将不再在 Notepad++ 的 GUI 中看到您提到的上述两个选项。但不要这样做。
实际上,他们会从 Bash 脚本中删除HERE DELIM和HERE Q格式化样式Notepad++,但不会解决您的问题。因为,正如我之前所说,heredoc格式化样式是硬编码在SciLexer.dll. 因此,当您删除这些属性时,Notepad++仍然可以检测heredoc命令,并且由于它找不到适当的格式样式,因此它将覆盖默认样式,这意味着所有行都将为黑色。因此你的问题无法按照你的想法得到解决。
一个简单的技巧可以部分解决您的问题:
Notepad++ 可以访问近 52 种编程语言的格式化风格,但并不是每个人都需要所有这些。因此,我的技巧是编辑另一种具有类似格式样式的语言来处理Bash文件。我发现它NSIS使用与 几乎相同的格式样式Bash。因此,在打开文件后编辑或编写一个.sh或其他文件时,只需选择语言为。BashNotepad++NSIS

这样就可以解决问题,但您可以看到关键字仍然是黑色,我们需要将其涂成蓝色。所以我们必须将 的关键字替换NSIS为 的关键字Bash。要再次执行此操作,请转到目录:
%AppData%\Notepad++(将目录复制粘贴到 Windows 资源管理器地址栏)
这次,我们需要名为langs.xml. 所以使用打开它Notepad++。搜索bash。你会发现类似这样的东西:

将该部分复制到其他地方。nsis现在再次在该文件中搜索langs.xml。你会发现类似这样的东西:

现在最后nsis用之前复制的部分替换该部分,如下所示:

并保存文件。现在,重新启动 Notepad++ 并查看更改。希望它能对您有所帮助。在这种方法中你会发现的问题是带 $符号的变量与其他颜色没有区别。但也许这不是一个大问题。希望能帮助到你。干杯。