如何编辑内置命令行为

时间:2014-06-02 17:07:27

标签: sublimetext2 sublimetext sublimetext3 sublime-text-plugin

我想编辑find_under_expandctrl+d)以将带连字符的单词视为单个单词。因此,当我尝试替换var a的所有实例时,它不应该匹配" a"的子字符串。用a-b这样的词来表示。

enter image description here

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

我需要它包含这样的内容:\b(?<!-)a(?!-)\b

可以编辑find_under_expand命令的来源吗?或者我必须重写整个事情?我不知道从哪里开始。

1 个答案:

答案 0 :(得分:3)

Sublime的命令以下列几种方式之一实现:as macrosplugins,内部作为编译程序的一部分(可能是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和我自己的测试。从理论上讲,这不应该太困难 - 您可以打开一个快速面板,用户可以在其中输入要搜索的模式/正则表达式,您可以遍历当前视图查找匹配项并突出显示/选择它们。

祝你好运!