我正在尝试找出一种方法,在 Notepad++ 中自动搜索并替换所有特殊/重音字母/字符(例如Â
/ Ô
)为等效的常规字母/字符(A
/ )。O
尝试使用 ToolFx,但没有作用。
答案1
上面的建议非常好,但目前由于 Notepad++ 和“Notepad++ Python Script”之间的问题,它无法正常工作。几个月以来,Notepad++ 插件管理器会下载一个旧的 Python Script 版本,该版本无法与编辑器一起使用。要解决此问题:
- 退出 Notepad++
- 下载SourceForge 的兼容版本。
- 双击运行下载的安装程序。在较新的 Windows 上,它会要求切换到管理员权限。
- 确保在安装过程开始时选择正确的安装驱动器。它无法正确检测 Notepad++ 安装盘。我不得不重新安装它,因为默认情况下它安装在 C:\ 上,即使 Notepad++ 在另一个磁盘上。
- 按照向导的说明进行操作。
- 安装过程完成后,(重新)启动 Notepad++。现在打开插件菜单。您应该会看到其中有一个新的“Python 脚本”项。如果出现,则说明您已强制安装了正确的版本。您也可以通过打开插件管理器、转到“已安装”选项卡并查找显示 Python 插件版本 1.0.8(此时)的条目来进行仔细检查。
您几乎已经完成了。转到插件 => Python 脚本 => 显示控制台菜单。Notepad++ 底部将出现一个窗格。它必须显示如下提示:
Python 2.7.6-notepad++ r2 (default, Apr 21 2014, 19:26:54) [MSC v.1600 32 bit (Intel)] Initialisation took 156ms Ready.
各种版本号截至今天为止都是最新的,当然它们会随着时间的推移而改变。如果底部窗格显示异常,表明发生了异常或(并且)它保持空白,则说明您安装了错误的 Python 插件版本。
现在,让我们以正确的方式应用脚本:
- 打开两个新的空白标签/文件。
- 首先粘贴带重音符号的文本。
- 右键单击第二个选项卡并选择“移至其他视图”菜单。 Notepad++ 窗口将拆分。
- 按照上述说明打开 Python 脚本控制台(插件 => Python 脚本 => 显示控制台菜单)。
- 转到 Python 窗格底部的控制台行,其开头有一个“>>>”标记。
- 键入:
from Npp import *
然后按 Enter(从现在开始假设您始终在命令末尾按 Enter)。 import unicodedata
在同样的输入文本中输入: 。- 单击(选择)包含重音文本的选项卡(这个很重要!)。
在 Python 提示符中逐行输入以下命令,然后在每行之后按 Enter:
eText = editor.getText() uText = unicode(eText, "UTF-8") nText = unicodedata.normalize( "NFKD", uText )
如果您想确保 Python“确实输入了文本”:在您输入eText = editor.getText()
(+ Enter 键)后,输入:print eText
+ Enter。您应该看到带重音的文本转储在 Python 控制台输出窗格中。
- 单击(选择)空白选项卡 (这个很重要!)。
editor.addText( nText.encode('ASCII', 'ignore') )
在常用的Python控制台命令输入文本框中输入: 。- 空标签将填充转换后的无重音文本。请务必仔细遵循此待办事项列表,因为很容易错过某个步骤(尤其是单击标签),然后您必须从头开始。
答案2
不要被你所做的事情所限制看可用。我们在 N++ 中提供了 Python,这意味着快速的 SO 搜索[python] [unicode] remove accents
会显示这个投票率很高的问题就是处理这个!
我们可以在 N++ 中轻松测试以了解其工作原理:
- 打开两个新的缓冲区/选项卡/文件或任何您喜欢的名称。
- 复制并粘贴这些拉丁文扩展的 UTF-8 字符进入第一。
- 右键单击第二个选项卡并选择“移动到其他视图”。
打开 Python 脚本控制台并尝试以下命令::
从 Npp 导入 *
导入 unicodedata
<< 在视图 1 中选择选项卡。 >>
eText = editor.getText() << 在视图 2 中选择选项卡。 >>
uText = unicode(eText, "UTF-8")
nText = unicodedata.normalize( "NFKD", uText )
editor.addText( nText.encode('ASCII', 'ignore') )
稍微浏览一下,似乎有很多方法可以完成删除重音符号的任务,问题是哪种方法最适合您。现在您可以看到在您的文本上“尝试”这些解决方案是多么容易,请继续尝试。一旦您喜欢某种方法,请将其添加为脚本(使用插件菜单),它将随时可用。
玩得开心!
顺便说一句 - 如果您没有安装 Python 脚本,您可以使用插件 -> 插件管理器来安装它。
答案3
脚本
以下是来自第一的和第二答案,可用于分配快捷键来转换选定的文本:
class convert_char01:
import unicodedata
eText = editor.getSelText()
uText = unicode(eText, encoding='utf-8', errors='ignore')
nText = unicodedata.normalize( "NFKD", uText )
editor.replaceSel(nText)
捷径
以下是创建快捷键来运行脚本的方法:
- 为 NPP 安装 Python 脚本。
- 创建新脚本:
- 去插件>Python 脚本>新脚本。
- 将其命名为“convert_char.py”。
- 将此脚本添加到菜单:
- 去插件>Python 脚本>配置,点击您的用户脚本并点击添加按钮添加到菜单项。
- 建议还设置初始化到启动时以加快速度。
- 创建新的快捷热键:
- 可能需要先重新启动 NPP,才能让新的菜单项显示在快捷方式映射器。
- 在下方创建新的快捷方式加速器设置>快捷方式映射器...。
现在,当您突出显示一个字符串时,您可以快速转换该屏幕上的字符以运行脚本,而无需使用控制台。