13

对于一直阻碍使用 notepad++ 的问题,我找不到解决方案。

当您双击文本以突出显示该文本和其他喜欢的文本时,camelCase或者under_score单词效果很好,但是当hyphen-words-are-clicked这不会将其视为单个单词并且仅突出显示“-”之间的段时。

问题:如何自定义notepad++,以便将连字符视为单个单词?或者有人知道这样做的文本编辑器吗?

看到了这个,但不知道如何实现它: http: //sourceforge.net/apps/mediawiki/notepad-plus/index.php ?title=Word_Customisation

这真的很有帮助:记事本++中存储的记录宏在哪里?

4

7 回答 7

13

Notepad++ 依赖 Scintilla 进行单词选择。正如 caoanan 在他的回答中注意到的那样,可以使用 SCI_SETWORDCHARS 变量配置 Scintilla。您可以使用简单的 NppExec 脚本在 Notepad++ 中设置此变量:

  1. 安装 NppExec
    • 菜单Plugins -> plugin Manager -> Show Plugin Manager
    • 找到 NppExec,选中该框并点击安装
  2. 创建脚本

    • 菜单Plugins -> NppExec -> Execute ...
    • 编写此代码(您可以在列表末尾添加其他字符,例如 .$#@):

      NPP_CONSOLE 0
      sci_sendmsg SCI_SETWORDCHARS 0 "CDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-"
      
    • 点击保存...
    • 您现在可以通过按 OK 来执行它
  3. (可选)Notepad++ 启动时执行
    • 菜单Plugins -> NppExec -> Advanced Options...
    • 在 Notepad++ 启动时执行此脚本下拉列表中选择您的脚本
于 2015-03-29T10:55:35.037 回答
4

2018

我尝试使用已发布的解决方案,但是当我移动到另一个文件时,我每次都必须再次运行脚本。所以我这样做了,在菜单中:

Settings > Preferences > Delimiter

选择:

  • 将您的角色添加为单词的一部分

插入连字符:

-

它奏效了。

于 2018-09-10T17:53:19.560 回答
2

在使用 Notepad++ 编辑 Lisp/Scheme 源代码时,我遇到了同样的问题。

解决方法在于底层的 Scintilla 库 (SciLexer.dll)。

我以一种“直率”的方式尝试过——破解代码并重建 SciLexer.dll。
请注意添加到以下代码中的“-”

字符分类.cxx

void CharClassify::SetDefaultCharClasses(bool includeWordClass) {
    // Initialize all char classes to default values
    for (int ch = 0; ch < 256; ch++) {
        if (ch == '\r' || ch == '\n')
            charClass[ch] = ccNewLine;
        else if (ch < 0x20 || ch == ' ')
            charClass[ch] = ccSpace;
        else if (includeWordClass && (ch >= 0x80 || isalnum(ch) || ch == '_' || ch == '-'))
            charClass[ch] = ccWord;
        else
            charClass[ch] = ccPunctuation;
    }
}

或者,如ScintillaDoc.html中所述的“智能”方式

SCI_SETWORDCHARS(<unused>, const char *characters)

Scintilla 有几个对单词进行操作的函数,这些单词被定义为来自特定字符集的连续字符序列。此消息定义哪些字符是该集合的成员。在处理此函数之前,字符集被设置为默认值。例如,如果您的字符集中不允许使用“_”,请使用:SCI_SETWORDCHARS(0,abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789");

于 2015-02-21T16:42:13.067 回答
1

http://sourceforge.net/p/notepad-plus/discussion/1290590/thread/39ba5cd8/

安装 Npp_Exec 插件并从此线程复制字符串,添加您希望 Npp 将其视为单词的一部分的符号。

于 2014-02-20T14:36:15.383 回答
1

我还不知道 Notepad++ 中的那个选项。既然您已经询问过其他任何这样做的文本编辑器,我建议您使用Sublime Text。这是一个非常酷的文本编辑器,具有许多智能功能。我打赌你会喜欢的。默认情况下,它不会将连字符的单词视为单个单词。但是为此自定义设置太容易了。您需要做的就是转到'Preference-> Setting-Default',您将在其中找到以下设置:

"word_separators": "./\\()\"'-:,.;<>~!@#$%^&*|+=[]{}`~?",

从那里,只需删除连字符,我们就完成了!

于 2014-02-20T16:29:06.437 回答
0

一种解决方法是:

  • 在“查找”窗口中,将要查找的文本设置为空格

  • 在快捷方式映射器(主菜单部分)中,将“查找下一个”分配给 Ctrl+Right,将“查找上一个”分配给 Ctrl+Left

现在,只要搜索文本只是一个空格,它实际上就是唯一的分隔符。如果您需要其他分隔符,例如逗号和句点,请将 Find 文本设置为 [ ,.]。

于 2016-04-14T05:08:21.497 回答
0

如果您没有管理员权限且没有插件管理器,您可以通过下载 dll/zip 文件并将 dll 保存到 npp 安装下的“插件”子文件夹来安装大多数插件。然后重启npp。

于 2017-11-08T13:07:05.480 回答