将控制字符[SOH]显示为空白,否则在记事本++中显示 [英] Displaying Control character [SOH] as blank space or else in Notepad++

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

问题描述

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

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

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

推荐答案

简介

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

SCI_SETCONTROLCHARSYMBOL(int符号)

SCI_GETCONTROLCHARSYMBOL

默认情况下,Sintilla将控制字符(代码小于32的字符)以圆角矩形显示为ASCII助记符:";nul";,";SOH";,";STX";,";ETX";,";EOT";,";ENQ";,";ACK";,";BEL、&Quot;FF&Quot;、CR&Quot;、&Quot;SO&Quot;、SI&Quot;、&Quot;DLE&Quot;、&Quot;DC1&Quot;、&Quot;DC2&Quot;、&Quot;DC3&Quot;、&Quot;DC4&Quot;、&Quot;NAK&Quot;、&Quot;SYN&Quot;SUB&QOOT;、";ESC&QOT;、&QOOT;FS&QOT;、&QOOT;GS&QOT;、&QOOT;RS&QOT;、";US&QOT;。这些助记符来自信号的早期,但有些仍在使用(例如,LF=换行符,BS=退格键,CR=回车)。

您可以选择用范围在32到255之间的ASCII代码的指定符号替换这些助记符。如果设置的符号值小于32,则所有控制字符都显示为助记符。您设置的符号将以为字符设置的样式的字体呈现。您可以使用SCI_GETCONTROLCHARSYMBOL消息回读当前符号。默认符号值为0。

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

技术

使用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]显示为空白,否则在记事本++中显示的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆