如何搜索选定的文本?

How to do a search for the selected text?

如何在当前文件中搜索选定的文本而无需 复制/ctrl-f/粘贴

澄清一下: Ultraedit 有这种行为。当按下 F3 并且没有选定的文本时,它会执行最后一次搜索,如果有选定的文本,那么它会在当前文件中搜索选定的文本。

启用 editor.find.seedSearchStringFromSelection 设置,如下所示。这将导致在您按 ctrl+f 时自动搜索突出显示的文本。

我找到了我要找的东西。

Ctrl+D 触发操作 A​​dd Selection To Next Find Match 这正是我想要的:立即搜索所选文本,就像 F3 在 Ultraedit 中。

Ultraedit-way搜索是我的最爱,真的很方便:一个'F3'键可以搞定所有。

Ctrl+D 的缺点是:它不能 环绕搜索。

说明一下,Ultraedit方式搜索的定义是: 当按下 F3 并且没有选定的文本时,它会执行最后一次搜索,如果有选定的文本,那么它会在当前文件中搜索选定的文本。

这里是绝对100%兼容Ultraedit方式搜索的解决方案:

  • 选中文本后,执行 nextSelectionMatchFindAction
  • 当没有文本被选中时,执行 nextMatchFindAction
  • 单个 F3 执行上述两种操作。
  • Shift+F3 保持原样:查找上一个

因此keybindings.json可以添加下面几行来禁用原来的F3Ctrl+F3函数,并添加两个新的F3文本选中和不选中的函数。

{
    "key": "f3",
    "command": "editor.action.nextSelectionMatchFindAction",
    "when": "editorFocus && editorHasSelection"
},
{
    "key": "ctrl+f3",
    "command": "-editor.action.nextSelectionMatchFindAction",
    "when": "editorFocus"
},
{
    "key": "f3",
    "command": "editor.action.nextMatchFindAction",
    "when": "editorFocus && !editorHasSelection"
},
{
    "key": "f3",
    "command": "-editor.action.nextMatchFindAction",
    "when": "editorFocus"
}

还有一件事需要解决: 当按下 F3 时,会出现搜索对话框并突出显示每个匹配的文本,您可以在搜索完成后按 ESC 关闭搜索对话框。

更新@2021/1/25 如果有人希望 Shift+F3F3 一样聪明,请将以下行添加到 keybindings.json:

{
    "key": "shift+f3",
    "command": "editor.action.previousSelectionMatchFindAction",
    "when": "editorFocus && editorHasSelection"
},
{
    "key": "shift+f3",
    "command": "editor.action.previousMatchFindAction",
    "when": "editorFocus && !editorHasSelection"
},
{
    "key": "shift+f3",
    "command": "-editor.action.previousMatchFindAction",
    "when": "editorFocus"
},