notepad ++选择带连字符的文本

时间:2013-05-30 14:19:35

标签: text-editor notepad++

我无法找到阻碍使用记事本++的问题的解决方案。

当您双击文字以突出显示该文字以及其他类似文字时,camelCaseunder_score字词效果很好,但hyphen-words-are-clicked时,这不会将其视为单个字,只会突出显示细分在“ - ”之间。

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

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

这真的很有帮助:Where are the recorded macros stored in Notepad++?

7 个答案:

答案 0 :(得分:12)

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

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

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

      NPP_CONSOLE 0
      sci_sendmsg SCI_SETWORDCHARS 0 "CDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-"
      
    • 点击保存...
    • 现在可以按OK
    • 执行它
  3. (optionnal)当Notepad ++启动时执行
    • 菜单Plugins -> NppExec -> Advanced Options...
    • 选择在Notepad ++启动时执行此脚本下拉列表中的脚本

答案 1 :(得分:2)

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

治愈在于潜在的Scintilla库(SciLexer.dll)。

我尝试过“直言不讳”的方式 - 破解代码并重建SciLexer.dll。
请注意' - 添加到以下代码

CharClassify.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“);

答案 2 :(得分:2)

2018

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

Settings > Preferences > Delimiter

选择:

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

插入连字符:

-

它奏效了。

答案 3 :(得分:1)

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

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

答案 4 :(得分:1)

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

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

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

答案 5 :(得分:0)

解决方法是:

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

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

现在,只要搜索文本只是一个空格,它就会有效地成为唯一的分隔符。如果您需要其他分隔符,例如逗号和句点,请将查找文本设置为[,。]。

答案 6 :(得分:0)

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