sublimetext2 - 如何编辑内置命令行为

标签 sublimetext2 sublimetext sublimetext3 sublime-text-plugin

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

enter image description here

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

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

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

最佳答案

Sublime 的命令通过以下几种方式之一实现:如 macros ,如plugins ,并在内部作为已编译程序的一部分(可能作为 C++)。默认宏和插件可以在 ST2 的 Packages/Default 目录中找到(其中 Packages 是选择 Preferences -> Browse Packages 时打开的目录...),或压缩在 ST3 中的 Installed Packages/Default.sublime-package 文件中,可使用 @skuroda 的优秀 PackageResourceViewer 进行提取插件,可通过包控制获得。宏具有 .sublime-macro 扩展名,而插件是用 Python 编写的,具有 .py 扩展名。

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

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

祝你好运!

关于sublimetext2 - 如何编辑内置命令行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23999800/

相关文章:

build - Mac OS 上的 Sublime 和 q 文件自动build设置

css - 在 sublime text 的多语言语法上使用相同的自动完成

html - Mac 上的 Sublime Text 3 [ctrl+逗号]

text-editor - sublime text 2如何设置环境变量

sublimetext - 使用 SublimeREPL 作为 Django shell

css - 升华器 : problems with csslinter

sublimetext - ctrl+space 键绑定(bind)不适用于在 Sublime Text 3 中进行评论

javascript - Console.log 在 Sublime Text 3 中不打印(使用 Node Build System)

Python:程序意外终止

sublimetext2 - 在 Sublime Text 2 中更改语法高亮