Notepad++ 是我日常工作的重要利器。不过原生的并不够用,比如在启用自动换行之后会出现中英混排换行显示问题:如果同一行拥有英文+中文,而同时中文内容又比较长的话,Notepad++就会把这句中文当作一个英文单词来处理,从而使得中文被自动分到了下一行,造成阅读与修改的不便。
解决方案
- 安装一个新插件:插件 → 插件管理 → NppExec;
- Notepad++ 会自动安装并重启;
- 进入该插件,选择
Execute NppExec Script,然后保存:
sci_sendmsg SCI_SETWRAPMODE SC_WRAP_CHAR
npp_console 0
- 之后再次进入该插件,选择
Advanced Options,在Execute this script when Notepad++ starts中选择之前保存的脚本,再点击OK即可。
解释
上述代码的作用是是强制 Notepad++ 以「按字符换行」模式(character wrap mode)显示文本,从而解决「中英文混排时中文被错误识别为单个英文单词、导致换行异常」的问题。
sci_sendmsg SCI_SETWRAPMODE SC_WRAP_CHAR:SCI_SETWRAPMODE是 Notepad++ 内部所使用的编辑组件 Scintilla 的一个消息命令,用于设置自动换行的方式。参数SC_WRAP_CHAR表示按「字符」而不是「单词」换行。默认情况下,Notepad++ 使用的是SC_WRAP_WORD(按单词换行),这对于英文很合适,但连续的中文会被当作一个整体「单词」,因此导致整段中文被挤到下一行。改成SC_WRAP_CHAR后,Notepad++ 会逐字符判断是否需要换行,就能正常断开中文行。npp_console 0: 关闭 NppExec 的命令输出窗口,让脚本执行时不弹出控制台。- 把这段脚本设置为「启动时自动执行」,即可让 Notepad++ 每次打开时都启用按字符换行模式,永久修复中英文混排的换行问题。