2

我正在使用 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=editor 为每个选择范围执行命令。但我不知道为 args 输入什么我认为对于命令输入是“gotolinestart”但我不确定我可以使用一个光标但不能用于多个光标的其他功能包括

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

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

4

1 回答 1

1

它应该说的文档中似乎有一个错误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"
})
于 2013-09-20T05:43:05.710 回答