【问题标题】:Removed hyphen from word_separators, ctrl+d no longer makes sense从 word_separators 中删除了连字符,ctrl+d 不再有意义
【发布时间】:2014-07-21 09:01:17
【问题描述】:

我从word_separators 设置中删除了-,效果很好。

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

这是因为 ctrl + d 用正则表达式边界\b 包裹了您的搜索,而- 仍被视为边界。

我现在可以做些什么来让 ctrl + d 不再将- 视为边界。

编辑:图片:

a-b 中的“a”不应突出显示,因为 a-b 是该语言中的单个变量名,这就是我从 word_separators 中删除 - 的原因

更多说明:如果我尝试替换变量 a 的所有实例,我不希望它与其他变量的部分匹配,例如 a-b 中的“a”。

【问题讨论】:

  • 您能否发布一个示例,说明正在发生的事情以及预期的编辑器行为是什么?
  • @Amir 当然,我在我的问题中添加了一张图片
  • 你为什么不通过选择带有空格的a来找到'a'。或者通过 Ctrl + f 找到这个正则表达式模式a ?
  • @Amir 用空格选择不是我想做的,而且这种正则表达式模式比ctrl+d 现在做的更糟糕。这将匹配任何地方的任何a 字符
  • word_separators 来自manual:“在某些情况下,可能会根据其他标准(例如,语法定义规则)对文本进行标记。”

标签: regex sublimetext sublimetext3


【解决方案1】:

从我在回答您的other question 时的一些非正式实验中可以看出,"word_separators" 设置似乎在双击以选择单词时主要相关。例如,我在一个文件中有以下单词:

而我的word_separators 列表是./\\()\"'-:,;<>~!@#%^&*|+=[]{}`~?$,所以它包括-/,但不包括_。如果我将光标放在第一个 foo(没有先选择整个单词)并点击 CtrlD,我会得到

如果我继续按 CtrlD 几次,我会得到

所以只选择了“单个词” - foo_bar 不是,foobar 也不是。但是,如果我将word_separators 设置为.\\()\"':,;<>~!@#%^&*|+=[]{}`~?$(删除-/),我会在重复点击 CtrlD 时得到相同的结果:

-/ 仍被视为单词分隔符,即使我将它们从列表中删除。如果我将_添加到word_separators列表中,结果是一样的,只能得出一个明显的结论:word_separatorsCtrlD忽略(find_under_expand)。


但是,word_separators 列表IS 在双击选择单词时使用。使用这样的列表:.\\()\"'_:,;<>~!@#%^&*|+=[]{}`~?$(缺少-/,但有_),依次双击每个单词中的foo 会得到以下信息:

有趣的是,双击第一个 foo 会给出

表示类似选择的“框”高亮不关注word_separators


当使用 Find -> Find... 进行搜索时,word_separators 会被忽略。当没有选择任何内容并在搜索框中输入foo(非正则表达式搜索)时,会突出显示以下匹配项:

无论-/ 和/或/ 是否在word_separators 中,这都是相同的。

如果在选项中设置了"Whole Word",结果会有些不同,但无论-/ 和/或/ 是否在word_separators 中,它们都不会改变:


TL;DR

所以,结论是word_separators只有在双击选择单词时才有效。使用 Find 对话框或 CtrlDfind_under_expand 命令)依赖于一些内部分隔符列表,显然无法更改(见my answer here)。


多一点

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

【讨论】:

  • 你认为这是默认情况下应该是崇高的吗? (让ctrl+dword_separators 设置)也许我应该向崇高的家伙提这个功能建议?
  • @StephenSarcsamKamenar - 这(某种)已经解决了 - 请参阅 SublimeText/Issues 中的 issue。虽然,这可能有很大的不同,以至于可以创建一个新问题......
猜你喜欢
  • 2020-08-29
  • 1970-01-01
  • 1970-01-01
  • 2015-11-24
  • 2018-09-08
  • 2015-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多