选择在VSCode中出现的所有选定单词

有没有什么技巧或扩展可以在visual studio代码中选择所选单词的所有实例,以便在不搜索和替换的情况下编辑或删除这些实例,比如sublime文本中的Alt+F3

426388 次浏览

选择所有匹配editor.action.selectHighlights的情况。

# EYZ0 + # EYZ1 + # EYZ2

Mac上的Cmd+转变+lCmd+Ctrl+G

根据Visual Studio代码的键绑定,有:

Ctrl+转变+l选择当前选择的所有事件

而且

Ctrl+F2选择当前单词的所有出现

你可以在命令面板(View -> Command Palette)或键盘快捷键编辑器(File > Preferences > Keyboard Shortcuts)中查看VS Code中当前激活的键盘快捷键。

Ctrl + F2适用于Windows 10。

Ctrl + 转变 + l启动性能日志记录

如果你只想选择几个呢?

没问题,首先:

  1. Ctrl+F通过输入字母找到它们
  2. ESC退出搜索
    (即使在使用时也需要这样做 Ctrl < / kbd > + # EYZ0 + < kbd > L
  3. . .

    只要用你的鼠标或键盘选择这些字母 李(# EYZ0 + # EYZ1) < / >
现在鼠标光标是闪烁在你的第一个选择, 使用更多的键绑定(感谢参考j08691) 你可能:< / p >
  • Ctrl+D选择(添加)下一个出现
  • # # EYZ1 EYZ0 + + # EYZ0 + # EYZ3 <强>跳过 并添加下一个
  • Ctrl+U 撤销最新的光标操作

在我的MacOS案例中,由于某种原因,Cmd+转变+l在按键盘上的快捷键时不工作(尽管它在菜单中单击这个选项时工作得很好:Selection ->选择所有发生)。所以对我来说,按Cmd+FN+F2就可以了(FN显然是启用“F2”)。

顺便说一句,如果你忘记了这个快捷方式,只需右键单击所选内容,然后看到“更改所有事件”选项

在Mac:

选择所有匹配:命令 + 转变 + l

但如果你只是想选择另一个匹配接下来:命令 + D

如果你想一个一个地做,那么你可以这样做:

  1. 选择一个词
  2. ctrl + d (windows)。

这样可以帮助你一个一个地选择单词。

我需要在一个文件中提取所有匹配的搜索行(使用正则表达式)

  1. 打开查找。选择正则表达式图标并输入搜索模式
  2. (可选)通过打开设置并搜索selectHighlights (Ctrl+selectHighlights)启用选择高光
  3. Ctrl+l选择所有搜索项
  4. 复制所有选定的行
  5. 打开新文档
  6. 粘贴所有搜索到的行。

这似乎是一个老问题,但值得回答。

有-除了接受的答案-一个花哨的快捷方式来做到这一点,只要选择想要的单词,并按Ctrl + D尽可能多的次数,每次按将在编辑器中选择一个准确的出现,在所有出现都被选中后,只需输入替换,所有的出现都会被替换。

Ctrl+转变+l选择当前选择的所有事件。

enter image description here

在Ubuntu上:

Ctrl + F2将立即选择所有发生的事件。

Ctrl + D将逐个选择出现的事件。

已经列出了几个选项,但有两个没有。它可以使用重命名和重构工具,不只是选择所有,但做出特定的改变,在所有已经选择。我将尝试将所有我认为相关的答案捆绑在一起,并添加两个以上的答案,不仅可以完成工作,而且是在同一代码多次出现时进行单一更改的非常好的工具。



1. 选择所有匹配


若要使用多个游标来选择所有匹配项,可以使用2个键绑定中的1个。两个键绑定执行相同的功能,换句话说,2个键绑定,1个vscode命令。按键绑定如下。

1. # eyz0 + # eyz1
2. # eyz0 + # eyz1 + # eyz2
默认Keybinding
{
"key": "ctrl+f2",
"command": "editor.action.changeAll",
"when": "editorTextFocus && !editorReadonly"
}


// You can view/customize VSCode keybindings by pressing F1 and typing Keybindings



2. 选择下一个匹配


您可以使用下面的键绑定选择下一个匹配。这有利于选择特定区域内的所有事件。

# eyz0 + # eyz1

默认Keybinding
{
"key": "ctrl+d",
"command": "editor.action.addSelectionToNextFindMatch",
"when": "editorFocus"
}
 

边注
如果您按下键绑定 CTRL + K在按下CTRL + D之前,它不会选择下一个实例,而是将您移动到下一个实例,并使用光标定位它。


默认Keybinding

3.重命名


这个还没有被提及,但除了在传统的IDE(如Visual Studio 2022或JetBrains: IntelliJ)中进行重构时,这个是你会用到的。

当您使用这个键绑定时,它试图解决使用上面列出的其他选项时遇到的一些问题。其他选项有时过于贪婪,选择了你不想选择的部分单词,如果你不小心,你可能会删除相当多的代码,导致混乱的情况。如果你没有马上意识到你搞砸了,你最终会存钱,或者工作很长一段时间,然后才不得不重置一切,你最终会失去很多工作&时间。

F2试图通过在底层实现逻辑来解决这个问题(IDK,如果它是一种算法或什么的),但它感觉非常像Visual Studio中的重构。它只选择您想要针对的特定情况。因此,如果变量名为foo,则不会从名为fooFoo的变量中选择foo。它也不会从注释中选择foo

F2

{
"key": "f2",
"command": "editor.action.rename",
"when": "editorHasRenameProvider && editorTextFocus && !editorReadonly"
}



4. 找到


我将保持这个方法简短而巧妙,但是find将遍历您输入到编辑器小部件中的模式。

CTRL + F,然后输入您想要选择的内容。继续按输入,直到你找到它。



5. 最后最好的


没有一种方法可以每次都选择最好的,这就是为什么有几种不同的方法来做这件事,然而,有一些方法通常比其他方法更有用。据我所知,这个特性是VS Code独有的,我在处理大型JSON文件和大型代码库(如开源PR)时一直使用它。

VS Code有自己的搜索编辑器,它是一个特殊的编辑器。你可以通过点击活动栏上的放大镜图标打开搜索编辑器。在搜索编辑器侧栏中输入你想要选择的内容,然后按输入。它将在侧栏中返回所有结果。您可以使用较低的文本输入,替换所有的结果与任何你喜欢的。你也可以点击在编辑器中打开(它看起来像一个链接),它会在一个新文档中重现你搜索的所有内容,这是打开到一边。从那里您可以操作它,并将其添加回文档。我已经写了足够的答案,所以我不打算深入它能做的每一件事,但它不仅选择所有东西,它还提取它,替换它,让你准确地选择“全部”意味着什么。特定事件的对于以递归方式进行单个更改,它是一个很好的工具。

我还有另一个叫Loom的应用程序,在我的Mac电脑后台运行,它接管了我的键盘绑定。

# EYZ0 + # EYZ1 + # EYZ2

这只是随机的,我发现它是阻止键盘绑定到达VS Code。我试着一个一个地关闭已经打开的应用程序。这不是最好的方法,但很有效。

另外取消选择使用 Cntrl + U