ST3 - 将选择扩展到Word并快速查找下一步 - 在Sublime Text 3.1.1(B3176)中在Mac OS上双重分配cmd + d

问题描述 投票:0回答:1

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

看来,ST3中的Expand Selection to Word(菜单>选择>扩展选择到Word)功能被分配了与Quick Add Next相同的键盘快捷键(菜单>查找>快速添加下一个)。

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

所以现在我想知道我是否只是从根本上误解了预期目的,即使语言似乎毫不含糊。

  1. 有人可以确认这些功能应该有不同的行为,并且
  2. 如果是这样,我如何修复行为,以便我可以使用expand selection to word功能?

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

sublimetext3 keyboard-shortcuts selection
1个回答
2
投票

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

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

验证这是同一个命令;

  • 使用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触发;找到并选择下一次出现的文本。

现在我们可以通过按Escape返回单个选项并移动光标来重置事物,以便我们回到单个插入符号并且没有选定的文本。

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

如上所述再次重置,这次使用Shift和箭头键在第1行手动选择单词dolor。现在按下键可能会让你有点意外;第2行中单词dolore的一部分被选中并添加到选择中。第三次按下选择第4行的dolor,再按一次就会在第5行给出dolore的一部分。

很明显,这个命令做了两件事;它会将光标处的选择范围扩展为当前单词,但它也会尝试查找所选文本的其他实例并添加它们。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.