【问题标题】:Possible to move cursor to next instance of specific word?可以将光标移动到特定单词的下一个实例吗?
【发布时间】:2021-06-22 04:59:48
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: visual-studio-code vscode-extensions


    【解决方案1】:

    我修改了我提到的另一个扩展,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 开始。

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

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

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

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

    nextSelect 选项将依次转到并选择匹配项,以便您可以修改一些选择,然后移至下一个。



    我认为这个扩展(我写的)是你正在寻找的:Jump and select

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

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

    [如果您确实想查找所有匹配项并可选择将它们替换为预定义的正则表达式查找/替换,请参阅Find and Transform。]

    【讨论】:

      【解决方案2】:

      您很可能正在寻找 Move Last Selection To Next Find 匹配项 (editor.action.moveSelectionToNextFindMatch),默认绑定到 ctrl+k ctrl+d。相反方向 (editor.action.moveSelectionToPreviousFindMatch) 没有默认绑定。

      我个人为此使用 Ctrl+Shift+垂直箭头,并且相信我一直都在使用它们。 keybindings.jsonsn-p:

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

      确实,当您只想“跳转到下一个出现的单词或光标下的选择”时,这些命令名称在命令面板中是完全不可能找到的。令人无法理解他们是如何得到如此复杂的名字的。


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

      【讨论】:

      • 谢谢。看起来我仍然需要手动突出显示第一个条目,但之后它会起作用。这是可行的,但如果有人有任何其他建议,我也会全力以赴。
      • 是的。但至少第一次调用空选择会默默地“扩展选择”,所以使用简单的快捷方式,您只需调用两次才能真正跳转到下一个事件。我认为这是可以忍受的,并且可以为您提供准确的反馈,您将要跳到哪里。
      猜你喜欢
      • 1970-01-01
      • 2015-07-20
      • 1970-01-01
      • 2019-10-13
      • 2018-09-21
      • 1970-01-01
      • 1970-01-01
      • 2011-07-04
      • 1970-01-01
      相关资源
      最近更新 更多