我删除了 -
来自 word_separators
设置,这工作正常。
但是 ctrl + d 上的字 a
仍然匹配 a-b
中的“a” ,我不想它再这样做了。
这是因为 ctrl + d 用正则表达式边界包装您的搜索 \b
, 和 -
仍然被认为是一个边界。
现在我能做些什么让 ctrl + d 不考虑 -
一个边界了。
编辑:图片:
a-b
中的“a”不应突出显示,如 a-b
是这种语言中的单个变量名,这就是为什么我删除了 -
来自 word_separators
更多说明:如果我试图替换变量 a
的所有实例,我不希望它与其他变量的部分匹配,例如 a-b
中的“a” .
最佳答案
从我在回答您的 other question 时的一些非正式实验中可以看出, "word_separators"
双击选择单词时,设置似乎主要相关。例如,我在一个文件中有以下单词:
和我的 word_separators
列表是 ./\\()\"'-:,;<>~!@#%^&*|+=[]{}`~?$
,所以它包括 -
和 /
但不是 _
.如果我把光标放在第一个 foo
(不先选择整个单词)然后按 CtrlD,我得到
如果我继续按 CtrlD 多次,我会得到
所以只选择了“单个词” - foo_bar
不是,也不是 foobar
.但是,如果我设置 word_separators
至 .\\()\"':,;<>~!@#%^&*|+=[]{}`~?$
(删除 -
和 /
)重复按 CtrlD 时得到相同的结果:
-
和 /
仍然被视为单词分隔符,即使我从列表中删除了它们。如果我添加 _
到 word_separators
list,结果都是一样的,只能得出一个明显的结论:word_separators
被 CtrlD ( find_under_expand
) 忽略。
然而,word_separators
列表 IS 双击选择单词时使用。列表如下:.\\()\"'_:,;<>~!@#%^&*|+=[]{}`~?$
(缺少 -
和 /
,但有 _
),双击 foo
在每个单词中依次给出以下内容:
有趣的是,双击第一个 foo
给
说明类似选择的“框”高亮没注意word_separators
.
使用时 Find -> Find...
搜索,word_separators
被忽略。当未选择任何内容时 foo
在搜索框中输入(非正则表达式搜索),以下匹配项会突出显示:
无论是否-
,这都是一样的, /
,和/或 /
在 word_separators
或不。
如 "Whole Word"
在选项中设置,结果有点不同,但无论-
是否相同,它们都不会改变。 , /
,和/或 /
在 word_separators
:
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/