图片示例:

图片示例:

我在使用 Unix 时遇到以下问题.shNotepadd++ 中的文件:

如果文档内容被包裹在定界符命令。例如:

**<< 'EOF0'**

Content of the document --- All of which will be dyed in a single color.

**EOF0**

图片示例:

1 – 没有定语:

在此处输入图片描述


2-带有定语:

在此处输入图片描述


为什么我刚才描述的情况是有问题的:

当处理非常长的脚本时,如果只使用一个 (heredoc) 命令就导致所有内容都变成单一颜色,那就太烦人了,但您知道,到最后,如果能有一个多色文档,会比没有这个命令时舒服得多。

我尝试解决该问题的方法:

我尝试以Settings > Style configurator > Language --- Bash某种方式完全删除 HERE DELEM && HERE Q,但我在 GUI 中没有找到这种方法。

我的问题:

如何从 Notepad++ 中删除这两种样式 (或任何其他样式),以便它们不会影响 .sh 文档中的文本颜色? (在我的情况下是 .sh 文档)?

我只是不想让这样的包装器(heredocs 是文本包装器)被涂上任何颜色...我只是想完全删除它们的“原生” Notepad++ 风格...

答案1

您尝试实现的目标格式样式并不容易实现(但是,是的,可以通过更困难的方式实现),但您也可以通过一个简单的技巧解决问题。我在这里讨论两者。

为什么这不可能直接实现:

如果你进入Notepad++Windows 目录,你会发现一个名为 的文件SciLexer.dll。此文件是根据 Notepad++ 的原始源代码构建的。Bash代码检测命令的方式heredoc是硬编码在此文件中的。并且此文件不能由用户直接编辑。

然后如何编辑SciLexer.dll

我们知道这Notepad++是一个开源软件,我们可以SciLexer.dll从其提供的源代码中自己构建。但要做到这一点,一个人必须具备很好的编程语言知识,否则他可能会把所有事情搞砸。这里您将找到 和 的完整源代码Notepad++以及SciLexer.dll有关如何构建它们的详细说明。因此,如果您对编程有很好的了解,您一定可以阅读那里的教程,您将LexBash.cxxscintilla>lexers目录中找到一个名为的文件,您可以编辑该文件以删除heredoc检测部分并根据该教程重建文件。最后,您将获得新的。如果您将其替换为目录中的SciLexer.dll现有文件,它将像魔法一样工作。SciLexer.dllNotepad++

现在的问题是,如果你由于缺乏编程知识或时间不足而无法完成所有这些事情,那么还有其他方法吗?!!!可能没有,但我找到了一个技巧,你可以用它来部分解决你的问题。

它会按照你想象的方式发挥作用吗:

正如你所说:

我尝试以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 DELIMHERE 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++ 并查看更改。希望它能对你有所帮助。你会发现这种方法的问题是带 $符号的变量没有与其他颜色区分开来。但这可能不是一个大问题。希望它能有所帮助。干杯。

相关内容