我在使用 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.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
或其他文件时,只需将语言选择为 即可。Bash
Notepad++
NSIS
这样就可以了,但是您可以看到关键字仍然是黑色的,我们需要将其涂成蓝色。因此,我们必须将 的关键字替换NSIS
为 的关键字Bash
。要再次执行此操作,请转到目录:
%AppData%\Notepad++
(将目录复制粘贴到 Windows 资源管理器地址栏)
这次,我们需要名为 的文件langs.xml
。因此使用 打开它Notepad++
。搜索bash
。您将找到类似以下内容的内容:
nsis
将该部分复制到其他地方。现在再次在该文件中搜索langs.xml
。您将找到类似以下内容:
现在最后nsis
用之前复制的部分替换该部分,如下所示:
并保存文件。现在,重新启动 Notepad++ 并查看更改。希望它能对你有所帮助。你会发现这种方法的问题是带 $
符号的变量没有与其他颜色区分开来。但这可能不是一个大问题。希望它能有所帮助。干杯。