我想编辑find_under_expand
(ctrl+d
)以将带连字符的单词视为单个单词。因此,当我尝试替换var a
的所有实例时,它不应该匹配" a"的子字符串。用a-b
这样的词来表示。
我假设find_under_expand
将当前选择包装在正则表达式边界中,如下所示:\ba\b
我需要它包含这样的内容:\b(?<!-)a(?!-)\b
可以编辑find_under_expand
命令的来源吗?或者我必须重写整个事情?我不知道从哪里开始。
答案 0 :(得分:3)
Sublime的命令以下列几种方式之一实现:as macros,plugins,内部作为编译程序的一部分(可能是C ++)。可以在ST2的Packages/Default
目录中找到默认的宏和插件(其中Packages
是选择 Preferences -> Browse Packages...
时打开的目录),或者压缩在{ ST3中的{1}}文件,可使用@skuroda的优秀PackageResourceViewer
插件提取,可通过Package Control获得。宏有Installed Packages/Default.sublime-package
个扩展名,而插件是用Python编写的,并且有.sublime-macro
个扩展名。
我搜索了ST3中的.py
包(事情通常与ST2中的相同),并且无法找到包含Defaults
命令的宏或.py
文件,或find_under_expand
,这是在插件中命名命令类时的惯例。因此,我强烈怀疑此命令是Sublime的内部命令,可能是用C ++编写的,并链接到可执行文件或FindUnderExpand
库中。
所以,它看起来不像现有的文件,您可以轻松修改以调整您的负向前瞻/后视模式(我认为这是什么,我的正则表达式是有点生锈...)。相反,您必须从头开始实现自己的插件,该插件会读取设置文件中的.dll|.dylib|.so
值,"word_separators"
当前的实现似乎并没有这样做,判断来自你的previous question和我自己的测试。从理论上讲,这不应该太困难 - 您可以打开一个快速面板,用户可以在其中输入要搜索的模式/正则表达式,您可以遍历当前视图查找匹配项并突出显示/选择它们。