在Sublime Text 2中,当我使用Ctrl+D进行多重选择时,如何跳过一个匹配项?

226
我有一些代码,像这样:
testVar = { a: 1 };
testVariable1 = 2;
var c = testVar.a + testVariable2;
var d = testVar;

我想重命名"testVar"变量。当我使用Ctrl+D设置多个光标并编辑变量时,"testVariable"也会被选中和编辑。
在使用Ctrl+D设置多个光标时,有没有办法跳过某些选择?

这同样适用于VS Code,它有意试图模仿Sublime的多光标行为。 - John Y
7个回答

310

只需使用 Ctrl+K, Ctrl+D。(如果是OS X系统,则为Cmd+K, Cmd+D)。需要稍微练习,但可以完成任务!


6
@Qwerty:Alt+F3选中所有出现的内容。 - Emil Stenström
24
@Romain写道“需要多练习”。我认为这意味着它可能需要更直观。在高亮你想跳过的内容之前,不要按键组合。例如,如果你有3个匹配项,并且你想跳过第2个,请先将第1个匹配项高亮显示,然后按CTRL+D来高亮显示第2个,然后再按键组合以跳过第2个匹配项并高亮显示第3个。需要帮助吗? - Tyler Collier
1
将以下代码添加到用户按键映射中,可以将练习时间缩短到接近0! { "keys": ["ctrl+alt+d"], "command": "find_under_expand_skip" } - Mrchief
3
更新的答案,在 keybindings.json 文件中添加以下行: { "key": "ctrl+alt+d", "command": "editor.action.moveSelectionToNextFindMatch", "when": "editorFocus" } - bevo009

99

按下 Ctrl+KCtrl+D 可以一次性跳过一个选择。如果你在选择时跨度太大,可以使用 Ctrl+U 返回到先前的选择。

注意:对于 Mac OS X,请使用 Cmd 代替 Ctrl

可以通过在应用程序菜单栏中转到 Preferences > Key Bindings-Default 来查看此默认配置,你会看到类似于以下内容:

{ "keys": ["ctrl+d"], "command": "find_under_expand" },
{ "keys": ["ctrl+k", "ctrl+d"], "command": "find_under_expand_skip" }
如果您需要的话,可以按照自己的需求配置键盘快捷键。方法是进入“首选项” > “键绑定-用户”,复制上述代码,然后更改对应的键。

66

如果你将光标放在单词上,然后使用 Ctrl + D 来选择该单词,下次按下 Ctrl + D 时,它应该会选择下一个高亮的单词。

如果你双击选中单词,则 Ctrl + D 将选择完整字符串而不仅仅是高亮部分。

换句话说,Ctrl + D 不选中任何内容会进行整词搜索。如果你已经选中了某些内容,则 Ctrl + D 将执行子串搜索。

我已测试并且在Sublime Text 2版本2.0.1 Build 2217中有效。


14
这实际上是解决这个问题的唯一真正方法。人们在盲目地点赞。 - Qwerty
在未选择任何内容的情况下按 ctrl+D 也是区分大小写的。 - venkatvb
2
@vankatvb 我并不认为这是正确的... 对于我来说,即使没有选择任何内容,Ctrl+D 仍然是不区分大小写的。它只会突出显示区分大小写的匹配项,但实际上使用快捷键或 Alt+F3 将选择那些不匹配大小写的内容。 - Schism
顺便提一下,这是同一个问题的另一个答案:https://dev59.com/HWQn5IYBdhLWcg3wa2qV#18422707 - interestinglythere
1
@Qwerty,这不是“唯一正确的解决方案”,它与ctrl-k ctrl-d一样都是解决方案。两者都有其使用情况。例如,当搜索字符串没有被空格包围时,此答案就无用了。随意称呼别人为愚蠢也不是很有帮助。 - phil294
2
@phil294很久以前,我是一个不同的人。我希望现在能够更改评论。 - Qwerty

13

将光标放在变量之前,不要选择变量,按下Ctrl+D以选择变量的每个出现,而不是模式。


11
在Windows上,更新了2020年vscode的答案,在keybindings.json中添加以下行以轻松跳过下一个选择的事件:
  {
    "key": "ctrl+alt+d",
    "command": "editor.action.moveSelectionToNextFindMatch",
    "when": "editorFocus"
  },

*我知道这个问题是关于Sublime Text的,但是我通过谷歌搜索相同的问题+VSCode找到了它,所以它可能会对某些人有帮助,因为映射是相同的。


3

我认为我知道为什么这对我而言很困惑:这不是跳过,而是取消选择。

通常情况下,您按Ctrl+D,如果您错误地选择了一个,可以按Ctrl+K,D,首先按下K,然后按下D,而不松开Ctrl,这将取消选择。


0
我发现对我有用的是使用Ctrl+D来添加新的选择, 使用Ctrl+U来移除最后一个选择。 希望对你有帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接