我正在调试/监控一个包含控制字符[SOH]
的日志文件
这使得日志几乎不可读(对我来说,在NP ++上,但是必须这样,因为这个角色在我正在监视的协议中有一些用处)
如何在NP ++上以更友好的方式显示该角色?
编辑:替换不是一个选项,因为我只想拖尾文件,而不是编辑它。
答案 0 :(得分:18)
Notepad ++使用Scintilla作为编辑器组件。 Scintilla有一个函数SCI_SETCONTROLCHARSYMBOL(int symbol)
,您可以在其中设置将用于控制字符的字符。从Scintilla Docs他们描述了功能:
SCI_SETCONTROLCHARSYMBOL(int symbol)
SCI_GETCONTROLCHARSYMBOL
默认情况下,Scintilla在圆角矩形中显示控制字符(代码小于32的字符)作为ASCII助记符:" NUL"," SOH"," STX&# 34;," ETX"," EOT"," ENQ","确认"," BEL",&# 34; BS"," HT"," LF"," VT"," FF"," CR&#34 ;," SO"," SI"," DLE"," DC1"," DC2",&#34 ; DC3"," DC4"," NAK"," SYN"," ETB"," CAN" ," EM"," SUB"," ESC"," FS"," GS"," RS"," US"。这些助记符来自信号的早期,尽管仍然使用了一些(例如,LF =换行,BS =后退空间,CR =回车率)。
您可以选择使用ASCII代码在32到255范围内的指定符号替换这些助记符。如果将符号值设置为小于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>
请注意,您可以使用Ctrl
,Alt
,Shift
和Key
属性设置快捷方式。 wParam
将设置将使用的字符而不是拼写的代码。在这种情况下,代码32
是ASCII标准中的空格。邮件2388
是SCI_SETCONTROLCHARSYMBOL
值的常量。
保存文件
现在,您可以在运行时更改Notepad ++的行为。要使用它,请执行以下操作
打开Notepad ++ 只需打开编辑器即可。如果直接打开文件(即使用Notepad ++上下文菜单编辑),您将会遇到奇怪的行为。
从菜单(或快捷方式)激活宏。 如果有一种方法可以在启动时自动运行宏,那么最好在这里添加它
打开文件。 这里没什么新鲜的
答案 1 :(得分:0)
如果你想在将来选择Session Logging功能时避免使用这些字符,就像在Putty,Log&#34;可打印输出&#34;只要。这将取出所有不必要的Scintilla字符。
关于Putty(下面的缓存链接):
4.2“记录”面板
Logging配置面板允许您保存PuTTY会话的日志文件,以便进行调试,分析或将来参考。
主选项是一个单选按钮集,指定PuTTY是否会记录任何内容。选项是
+&#34;记录完全关闭&#34;。这是默认选项;在这种模式下,PuTTY根本不会创建日志文件。
+&#34;仅记录可打印输出&#34;。在此模式下,将创建并写入日志文件,但只会将可打印文本保存到其中。通常在可打印文本旁边向下发送的各种终端控制代码将被省略。如果您想在文本编辑器中读取日志文件并希望能够理解它,这可能是一种有用的模式。
+&#34;记录所有会话输出&#34;。在此模式下,将记录服务器发送到终端会话的所有内容。因此,如果您在文本编辑器中查看日志文件,您可能会发现它充满了奇怪的控制字符。如果您遇到PuTTY终端处理问题,这是一个特别有用的模式:您可以记录前往终端的所有内容,以便其他人可以稍后以慢动作重播会话并观察发生了什么问题。
+&#34;记录SSH数据包数据&#34;。在此模式(仅供SSH连接使用)中,通过加密连接发送的SSH消息数据包将写入日志文件。您可能需要这个来调试网络级问题,或者更有可能作为错误报告的一部分发送给PuTTY作者。请注意,如果您使用密码登录,密码将显示在日志文件中,因此请务必在将日志文件发送给其他人之前将其编辑出来!