【问题标题】:replace in selection in vscode在vscode中替换选择
【发布时间】:2022-01-29 07:20:19
【问题描述】:

关于 vscode 中的“查找”是否应该默认为整个文件或选择,已经有相当多的讨论(123)。讨论似乎已经趋向于默认禁用“选择中”,但提供配置选项“editor.find.autoFindInSelection”来更改此默认设置(三个选项从不,总是,仅在多行选择时)。

但是,我发现在我的工作流程中,当我进行简单的查找时,我从不希望“选择中”处于活动状态,但是当我使用多行选择进行查找/替换时,我确实想要它.

当我调用查找/替换(对我来说是 Ctrl+H)而不是简单的查找(对我来说是 Ctrl+F)时,是否有一个设置只切换“选择中”?

【问题讨论】:

  • 只是在搜索这个选项,“多行”选择至少对我来说应该足够了。对我来说,用选定的多行进行查找和替换是非常罕见的。

标签: visual-studio-code vscode-settings find-replace


【解决方案1】:

是否有设置仅在我调用时切换“选择中” 查找/替换(我是 Ctrl+H),而不是简单的查找(我是 Ctrl+F)?

您可以使用新命令 editor.actions.findWithArgs 设置以下键绑定:

{
  "key": "ctrl+f",
  "command": "editor.actions.findWithArgs",
  "args": {

    "findInSelection": false,

    "isRegex": false,

    "searchString": "not in selection",
  }
},

{
  "key": "ctrl+h",
  "command": "editor.actions.findWithArgs",
  "args": {

    "findInSelection": true,

    "isRegex": true,

    "searchString": "in selection",
  }
}

这些大多有效。我已经提交了一个错误:https://github.com/microsoft/vscode/issues/141683

如果 Find Widget 已关闭,它们会按预期工作。虽然您只会启用Find In Selection 选项if,但您在触发Ctrl+H 时会有一个选择。我认为这个要求是可以的。

如果 Find Widget 已经打开并且您 Ctrl+H 不起作用并且问题的主题是,Find In Selection 选项是 未禁用。应该是 - 在这种情况下,根据上述键绑定禁用 isRegex 选项。

如果问题解决了,那就差不多了。

【讨论】:

  • 我只是不接受这个答案。我不知道它是否曾经做我想做的事并且最近的 vscode 更新破坏了它,或者它是否从来没有像我想要的那样工作并且我没有注意到它。无论如何,如果没有活动选择,我希望 Ctrl+h 作用于整个文件,现在即使没有活动选择,它也会切换“选择中”。
  • 这在我的情况下不起作用。
  • @abunickabhi 我更改了答案以使用效果更好的新命令。
  • 哦,谢谢马克。现在可以了!
  • 我将您的建议粘贴在 keybindings.json 中,但是这两个快照只给了我没有替换字段的单行搜索字段。然后我尝试用“editor.action.startFindReplaceAction”替换 ctrl+h 快捷方式中的“editor.actions.findWithArgs”,但之后它不会再激活“in selection”了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-26
  • 2020-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多