ST3 - 将选择扩展到 Word 并快速查找下一个 - 在 Mac OS 上以崇高文本 3.1.1 (B3176) 中



如果这是这个问题的错误论坛,请提前道歉 - 在任何类型的编程方面,我绝对是一个初学者。

ST3 中的Expand Selection to Word(菜单>选择>将所选内容扩展到 Word)功能似乎已分配与Quick Add Next相同的键盘快捷键(菜单>查找>快速添加下一个)。

但是,即使手动单击这些选项(不使用键盘快捷键),效果也是一样的:单击"将所选内容扩展到Word"只会找到下一个匹配的强项并将其添加到当前选择中。

所以现在我想知道我是否从根本上误解了预期的目的,即使语言看起来很明确。

  1. 有人可以确认这些功能的行为应该不同吗,并且

  2. 如果是这样,如何修复行为以便我可以使用expand selection to word功能?

提前感谢您的时间和帮助!

对你的问题的简短回答是,这两个项目确实是同一件事,放在两个不同的地方并绑定到同一个键上。原因是该命令执行多项操作,具体取决于您使用它的情况,这使得它适合这两个位置。

就其价值而言,此特定命令的操作通常是新用户的绊脚石,因为它的功能有点微妙(如下所述)。

用于验证这是相同的命令;

  • 使用Preferences > Key Bindings打开键绑定窗口;在左窗格中,搜索find_under_expand;你会看到这个特定的键绑定(在MacOS上它使用super而不是ctrl):

    { "keys": ["ctrl+d"], "command": "find_under_expand" },
    
  • 使用命令面板中的View Package File,然后打开Default/Main.sublime-menu并执行相同的搜索;同一命令在不同的菜单项中有多个点击:

    { "command": "find_under_expand", "caption": "Expand Selection to Word" },
    { "command": "find_under_expand", "caption": "Quick Add Next" },
    

您还可以使用View > Show Console打开控制台,输入sublime.log_commands(True),然后触发命令,并在控制台中查看正在执行相同的命令,无论您使用哪个键绑定或菜单命令。


循环回到顶部,命令find_under_expand通常是新用户 Sublime 的绊脚石,因为它根据情况做不同的事情。这使得它非常强大和有用,但最初可能会让你不知道。

具体来说,该命令可能会执行以下几项操作:

  1. 如果至少有一个没有选择的插入符号,并且所有没有选择的插入符号都在单词内,则每个"空"插入符号处的选择都会扩展以覆盖该插入符号下的单词。因此,此命令在菜单中Expand Selection to Word工作。

  2. 如果所有插入符号都不"为空",并且所有选定内容都包含相同的文本,则该命令将查找所选文本的下一个匹配项,并通过在此处添加新插入符号并选择它将其添加到选定内容中。因此,此命令也Quick Add Next工作。

例如,以下是标准lorem代码段的内容:

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

如果将插入符号放在第 1 行的第一个dolor并按下键,则将选择文本dolor。这是#1触发;插入符号没有选择,并且是单词,因此选择被扩展。再次按键,第 4 行中的dolor将添加到所选内容中。这是#2触发;将找到并选择下一个出现的文本。

现在,我们可以通过按Esc返回单个选择并移动光标以返回到单个插入符号和没有所选文本来重置内容。

现在将插入符号放入dolor并像以前一样按键再次选择它。这一次,使用Ctrl+单击单词amet在该位置添加第二个插入符号。现在我们有两个插入符号,一个选择文本dolor,一个在amet内。如果你现在按下键,你会得到#1发生;amet将添加到选区中,但无论再按多少次,第 4 行上的dolor都不会添加到选区中。上面的 #2 项仅在所有选择都包含相同的文本时触发。

再次重置,如上所述,这次使用Shift和箭头键手动选择第 1 行上的单词dolor。现在按键可能会给您带来一些惊喜;第 2 行上单词dolore的一部分被选中并添加到所选内容中。第三次按将选择第 4 行的dolor,再按一次,您也会获得第 5 行的部分dolore

很明显,此命令可以同时执行这两项操作;它将光标处的选择扩展到当前单词,但它也会尝试查找所选文本的其他实例并添加它们。

其中经常弄乱人们头脑的部分是最后一个例子。正如我们在第一种情况下看到的那样,当我们让Sublime通过按键为我们选择单词时,继续按下可确保仅找到并添加确切的文本。但是,如果先手动选择文本,则该命令将选择文本的所有实例,即使它不是整个单词。

这是非常强大的,因为例如,您可以通过首先将选择扩展到变量名称,然后选择所有实例并键入新名称来轻松重命名变量。不用担心您可能会选择部分变量名称。但是,如果您需要选择部分单词,您也可以使用。

最新更新