本文介绍了将控制字符[SOH]显示为空白,否则在记事本++中显示的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在调试/监视包含大量控制字符[SOH]的日志文件
这使得日志几乎不可读(对我来说,在NP++上,但它必须是这样的,因为这个字符在我监控的协议中有一些用处)

如何在NP++上以更友好的方式显示该字符?

编辑:替换不是一个选项,因为我只想结尾文件,而不是编辑它。

推荐答案

简介

Notepad++正在为编辑器组件使用Sintilla。Sintilla有一个函数SCI_SETCONTROLCHARSYMBOL(int symbol),您可以在其中设置将用于控制字符的字符。它们从Scintilla Docs描述功能:

可能有一种方法可以做到这一点,但我要给您一种非常老套的方法来实现这一点。

技术

使用Notepad++以外的任何选项编辑文件%APPDATA%Notepad++shortcuts.xml

将以下内容添加到文件的<Macros>部分以手动添加宏:

<Macro name="RemoveControl" Ctrl="no" Alt="no" Shift="no" Key="0">
        <Action type="0" message="2388" wParam="32" lParam="0" sParam="" />
</Macro>
请注意,您可以使用CtrlAltShiftKey属性设置快捷方式。wParam将设置要使用的字符,而不是拼写出的代码。在本例中,代码32是ASCII标准中的空格。消息2388SCI_SETCONTROLCHARSYMBOL值的常量。

保存文件

使用

现在您可以在运行时更改Notepad++的行为。要使用此功能,请执行以下操作

打开记事本++只需打开编辑器即可。如果您直接打开文件(即使用记事本++上下文菜单编辑)会出现奇怪的行为。

从菜单(或您的快捷方式)激活宏。如果有办法在启动时自动运行宏,最好将其添加到此处

打开您的文件。这里没有什么新鲜事

备注

  1. 带有控制字符的位置仍将反转(默认为黑底白字)。
  2. 如果在打开文档时激活宏,则不会立即生效。您必须采取措施强制窗口重新绘制。
  3. 查看Scintilla.h文件可能会打开可能被类似利用的其他选项。

这篇关于将控制字符[SOH]显示为空白,否则在记事本++中显示的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-23 19:21