gpt4 book ai didi

javascript - 在 Ace Editor 中对多个光标执行方法

转载 作者:行者123 更新时间:2023-11-30 05:44:12 31 4
gpt4 key购买 nike

我正在使用 Ace 编辑器,我只能在单个光标上执行功能,不能在多个光标上执行例如

 editor.navigateLineStart(); 

如果有一个游标,则将光标移动到行首,如果有多个游标,则不会移动光标

这可以通过键入 (left-home) 手动完成因为下面的代码在文档 ace.js 中,但我不明白如何将 multiSelectAction 设置为“forEach”或者这是否有帮助

{name: "gotolinestart",
bindKey: bindKey("Alt-Left|Home", "Command-Left|Home|Ctrl-A"),
exec: function(editor) { editor.navigateLineStart(); },
multiSelectAction: "forEach",
readOnly: true
}

还有一个功能

 forEachSelection(String cmd, String args) 

http://ace.c9.io/#nav=api&api=editorwhich 为每个选择范围执行一个命令。但我不知道要为 args 输入什么我认为对于命令输入是“gotolinestart”,但我也不确定我可以使用一个游标但不能用于多个游标的其他功能包括

editor.getSelection().selectLeft();
editor.navigateLeft(args.times);

任何在 ace 编辑器中处理多个光标和选择的函数示例都会非常有帮助。

最佳答案

文档中似乎有一个错误,它应该说 forEachSelection({exec:function}, arg:any)

arg 可以是任何东西,它只是传递给 cmd.exec

它也只有在有多个选择时才有效,所以你需要做类似的事情

if (editor.selection.rangeCount > 1)
editor.forEachSelection({exec: function() {
editor.editor.navigateLeft(10);
}})
} else
editor.editor.navigateLeft(10);

另一种方法是使用 execCommand

editor.execCommand({
exec:function() {
editor.selection.selectLeft()
},
multiSelectAction: "forEach"
})

关于javascript - 在 Ace Editor 中对多个光标执行方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18904098/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com