regex - 从 word_separators 中删除了连字符,ctrl+d 不再有意义

标签 regex sublimetext sublimetext3

我删除了 -来自 word_separators设置,这工作正常。

但是 ctrl + d 上的字 a仍然匹配 a-b 中的“a” ,我不想它再这样做了。

这是因为 ctrl + d 用正则表达式边界包装您的搜索 \b , 和 -仍然被认为是一个边界。

现在我能做些什么让 ctrl + d 不考虑 -一个边界了。

编辑:图片:
enter image description here
a-b 中的“a”不应突出显示,如 a-b是这种语言中的单个变量名,这就是为什么我删除了 -来自 word_separators
更多说明:如果我试图替换变量 a 的所有实例,我不希望它与其他变量的部分匹配,例如 a-b 中的“a” .

最佳答案

从我在回答您的 other question 时的一些非正式实验中可以看出, "word_separators"双击选择单词时,设置似乎主要相关。例如,我在一个文件中有以下单词:
foobar
和我的 word_separators列表是 ./\\()\"'-:,;<>~!@#%^&*|+=[]{}`~?$ ,所以它包括 -/但不是 _ .如果我把光标放在第一个 foo (不先选择整个单词)然后按 CtrlD,我得到
foobar2
如果我继续按 CtrlD 多次,我会得到
foobar3
所以只选择了“单个词” - foo_bar不是,也不是 foobar .但是,如果我设置 word_separators.\\()\"':,;<>~!@#%^&*|+=[]{}`~?$ (删除 -/ )重复按 CtrlD 时得到相同的结果:
foobar4-/仍然被视为单词分隔符,即使我从列表中删除了它们。如果我添加 _word_separators list,结果都是一样的,只能得出一个明显的结论:word_separators被 CtrlD ( find_under_expand ) 忽略。

然而,word_separators列表 IS 双击选择单词时使用。列表如下:.\\()\"'_:,;<>~!@#%^&*|+=[]{}`~?$ (缺少 -/ ,但有 _ ),双击 foo在每个单词中依次给出以下内容:
foobar5
foobar6
foobar7
foobar8
有趣的是,双击第一个 foo
foobar9
说明类似选择的“框”高亮没注意word_separators .

使用时 Find -> Find... 搜索,word_separators被忽略。当未选择任何内容时 foo在搜索框中输入(非正则表达式搜索),以下匹配项会突出显示:
foobar10
无论是否-,这都是一样的, / ,和/或 /word_separators或不。
"Whole Word"在选项中设置,结果有点不同,但无论- 是否相同,它们都不会改变。 , / ,和/或 /word_separators :
foobar11

TL;博士
所以,结论是word_separators仅在双击选择单词时有效。使用 Find dialog 或 CtrlD( find_under_expand 命令)依赖于一些内部分隔符列表,显然无法更改(参见 my answer here )。

多一点
我之前忘记添加的一些信息:word_separators一些插件也将其用于各种事情,例如创建/修改/以其他方式处理选择、执行可编程完成、查找和替换以及其他类型的东西。

关于regex - 从 word_separators 中删除了连字符,ctrl+d 不再有意义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23974288/

相关文章:

regex - 如何在正则表达式中使用负前行删除不需要的行

javascript - 查找段落内元素的周围字符

sublimetext3 - Sublime Text 转到字符编号

javascript - 正则表达式排除词

visual-studio - .vssettings 文件(Visual Studio 设置)颜色格式

regex - 具有 3 个正则表达式替换的 Sublime 文本片段替换

git - 有什么方法可以阻止 Sublime Text 的 Git 插件弄乱状态栏吗?

javascript - 如何在 Sublime Text 3 中获得 Node.js 库支持?

c# - 正则表达式根据多次检查取值

php - 正则表达式过滤非缩小文件