代码之家  ›  专栏  ›  技术社区  ›  1.21 gigawatts

如何按照所描述的行为进行搜索

  •  0
  • 1.21 gigawatts  · 技术社区  · 10 年前

    我正在使用Ace编辑器,我正在使用搜索,当我使用它时,它会在每次按键更改时搜索文档。

    所以我的意思是,当我在搜索框中输入时,我在每次文本更改时调用这个方法:

    editor.find(searchInput.text);
    

    如果我有一个包含十个名为“list”的项目的文档,我键入“L”,它会找到第一个实例并突出显示“L”。然后我键入“I”,它找到第二个实例并突出显示“Li”。然后我键入“s”,它找到第三个实例,“Lis”被突出显示。

    我希望它做的是停留在第一个实例上并突出显示“Lis”。我想我需要设置光标位置。但是如何获得高亮显示单词开头的光标位置?或者更好的是,是否可以从当前搜索位置开始继续后续调用find()?我希望这是合理的。

    2 回复  |  直到 10 年前
        1
  •  1
  •   a user    10 年前

    有一个用于搜索的skipCurrent选项,请参见 https://github.com/ajaxorg/ace/blob/v1.2.0/lib/ace/ext/searchbox.js#L220 这是来自内置的ace搜索,正如您所描述的那样

        2
  •  0
  •   1.21 gigawatts    10 年前

    看起来我可以通过使用以下代码确保从当前锚点位置继续搜索:

    var position = editor.getSelectionAnchor();
    editor.find("needle", {row:position.row, column:position.column});
    

    仅供参考,它似乎不适用于整数,但我可能错了(尝试强制转换为字符串)。

    正如@auser所建议的,将skipCurrent设置为false也同样有效。

    editor.find("needle", {skipCurrent:false});