如何使搜索按照描述的行为工作
How to make search work as described behavior
我正在使用 Ace 编辑器并且正在使用搜索,并且当我使用它时,它会在每次按键更改时搜索文档。
所以我的意思是,当我在搜索框中输入内容时,我会在每次文本更改时调用此方法:
editor.find(searchInput.text);
如果我有一个包含十个项目的文档 "list" 并且我输入 "L" 它会找到第一个实例并突出显示 "L"。然后我输入 "i",它找到第二个实例并突出显示 "Li"。然后我键入 "s" 并找到第三个实例并且 "Lis" 突出显示。
我希望它做的是停留在第一个实例上并突出显示 "Lis"。我想我需要设置光标位置。但是如何获取突出显示单词开头的光标位置?或者更好的是,是否可以继续从当前搜索位置开始对 find() 的后续调用?我希望这是有道理的。
看来我可以使用以下代码确保从当前锚点位置继续搜索:
var position = editor.getSelectionAnchor();
editor.find("needle", {row:position.row, column:position.column});
仅供参考 它似乎不适用于整数,但我可能是错的(尝试转换为字符串)。
正如@auser 所建议的,将 skipCurrent 设置为 false 也可以。
editor.find("needle", {skipCurrent:false});
有一个用于搜索的 skipCrrent 选项,请参阅 https://github.com/ajaxorg/ace/blob/v1.2.0/lib/ace/ext/searchbox.js#L220,它来自内置的 ace 搜索,它已经像您描述的那样工作了
我正在使用 Ace 编辑器并且正在使用搜索,并且当我使用它时,它会在每次按键更改时搜索文档。
所以我的意思是,当我在搜索框中输入内容时,我会在每次文本更改时调用此方法:
editor.find(searchInput.text);
如果我有一个包含十个项目的文档 "list" 并且我输入 "L" 它会找到第一个实例并突出显示 "L"。然后我输入 "i",它找到第二个实例并突出显示 "Li"。然后我键入 "s" 并找到第三个实例并且 "Lis" 突出显示。
我希望它做的是停留在第一个实例上并突出显示 "Lis"。我想我需要设置光标位置。但是如何获取突出显示单词开头的光标位置?或者更好的是,是否可以继续从当前搜索位置开始对 find() 的后续调用?我希望这是有道理的。
看来我可以使用以下代码确保从当前锚点位置继续搜索:
var position = editor.getSelectionAnchor();
editor.find("needle", {row:position.row, column:position.column});
仅供参考 它似乎不适用于整数,但我可能是错的(尝试转换为字符串)。
正如@auser 所建议的,将 skipCurrent 设置为 false 也可以。
editor.find("needle", {skipCurrent:false});
有一个用于搜索的 skipCrrent 选项,请参阅 https://github.com/ajaxorg/ace/blob/v1.2.0/lib/ace/ext/searchbox.js#L220,它来自内置的 ace 搜索,它已经像您描述的那样工作了