在Ace Editor中对多个游标执行方法

时间:2013-09-19 20:15:16

标签: javascript cursor ace-editor

我正在使用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编辑器中运行多个游标和选择的函数示例都会非常有用。

1 个答案:

答案 0 :(得分: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"
})