可以将光标移动到特定单词的下一个实例吗?

Possible to move cursor to next instance of specific word?

我需要 运行 VSCode 通过一些 XML 至少 90% 是自动生成的。自动生成无法自行确定一些事情,需要手动干预 -- 手动编辑,在每个条目上生成一段特定的文本。

我想做的是找到一种方法(通过扩展或通过内置命令)设置一个键绑定,将光标向下移动到我选择的特定短语的下一个实例(我不会手动输入;它将被分配为键绑定的一部分)在当前文件中,当我按下它的绑定时。

例如,按 F17 转到当前文档中的下一个“FIXME”实例。

我已经经历了至少十几个扩展,但没有找到任何符合我需要的东西,而且内置 actions.find 不支持参数。 actions.findWithSelection 需要选择文本,所以这也行不通。

有什么想法吗?在某些时候肯定有人对此有同样的需求。至少我不认为这是一种罕见的需求。

您很可能正在寻找将上一个选择移动到下一个查找匹配项(editor.action.moveSelectionToNextFindMatch),默认情况下绑定到ctrl+k ctrl+ d。相反方向(editor.action.moveSelectionToPreviousFindMatch)没有默认绑定。

我个人使用 Ctrl+Shift+垂直箭头,相信我,我一直都在使用它们。 keybindings.json 片段:

  {
    "command": "editor.action.moveSelectionToPreviousFindMatch",
    "key": "ctrl+shift+up",
    "when": "editorFocus"
  },
  {
    "command": "editor.action.moveSelectionToNextFindMatch",
    "key": "ctrl+shift+down",
    "when": "editorFocus"
  },

事实上,当您只想“跳转到下一个出现的单词或光标下的选择”时,这些命令名称在命令面板中是很难找到的。真是无法理解他们是怎么起这么乱七八糟的名字的。


恭喜你回答第一个问题,顺便说一句!

我修改了我提到的另一个扩展,Find and Transform,使这变得非常简单。使用此键绑定

{
  "key": "alt+r",
  "command": "findInCurrentFile",
  "args": {
    "find": "FIXME",
    // "replace": "DONE",
    "restrictFind": "nextMoveCursor"
  }
}


{
  "key": "alt+r",
  "command": "findInCurrentFile",
  "args": {
    // "find": "FIXME",        // no find necessary !!
    // "replace": "DONE",
    "restrictFind": "nextMoveCursor"
  }
},

第一个示例使用固定的 find 并将从光标所在的位置转到下一个 FIXME - 如果匹配项中没有匹配项,它将换行到文件的开头文件的其余部分。

第二个示例将使用光标下的单词,因此要求您从单词 FIXME 开始。

第一个演示(具有查找值):

第二个演示(没有找到,注意在光标下的单词中使用来搜索):

扩展可以做更多的事情。 link上面有很多例子。

{
  "key": "alt+r",
  "command": "findInCurrentFile",
  "args": {
    "find": "FIXME",
    // "replace": "DONE",
    "restrictFind": "nextSelect"
  }
}

nextSelect 选项将依次转到 select 匹配项,因此您可以修改一些 select 离子,然后移动到下一个。



我认为这个扩展(我写的)就是您要找的:Jump and select

示例键绑定(没有可选的 select 短语):

{
    "key": "alt+r",                       // whatever keybinding you wish
    "command": "jump-and-select.jumpForward",
    "args": {
            "text": "FIXME",
            // "restrictSearch": "document",
    }
},

[如果您真的想找到所有匹配项并有选择地用预定义的正则表达式替换它们 find/replace 请参阅 Find and Transform。]