2

我想编辑find_under_expand( ctrl+d) 以将连字符的单词视为单个单词。因此,当我尝试替换 var 的所有实例时a,它不应该匹配单词中的“a”的子字符串,例如a-b,它目前正在匹配。

在此处输入图像描述

我假设find_under_expand将您当前的选择包装在正则表达式边界中,如下所示:\ba\b

我需要它包装成这样的东西:\b(?<!-)a(?!-)\b

find_under_expand命令的源代码是否可编辑?还是我必须重写整个事情?我不知道从哪里开始。

4

1 回答 1

3

Sublime 的命令以以下几种方式之一实现:作为,作为插件,以及在内部作为编译程序的一部分(可能作为 C++)。默认的宏和插件可以Packages/Default在 ST2 的目录中找到(Packages选择 时打开的目录在哪里Preferences -> Browse Packages...),或者压缩到Installed Packages/Default.sublime-packageST3 中的文件中,可使用 @skuroda 的优秀PackageResourceViewer插件提取,可通过 Package Control 获得。宏有.sublime-macro扩展,而插件是用 Python 编写的并且有.py扩展。

我在 ST3 中搜索了整个Defaults包(事情通常与 ST2 中的相同),但无法找到.py包含find_under_expand命令的宏或文件,或者FindUnderExpand,这是在插件中命名命令类时的约定。因此,我强烈怀疑这个命令是 Sublime 内部的,可能用 C++ 编写并链接到可执行文件或.dll|.dylib|.so库中。

所以,看起来没有一个现有的文件可以轻松修改以调整负面的前瞻/后视模式(我认为这就是那些,我的正则表达式有点生疏......)。相反,您必须从头开始实现自己的插件,该插件读取设置文件中的值,从您之前的问题和我自己的测试来看"word_separators",当前的实现find_under_expand似乎没有这样做。从理论上讲,这应该不会太困难 - 您可以打开一个快速面板,用户在其中输入要搜索的模式/正则表达式,您可以遍历当前视图以查找匹配项并突出显示/选择它们。

祝你好运!

于 2014-06-02T17:55:15.753 回答