在 Ace Editor 中对多个光标执行方法
Posted
技术标签:
【中文标题】在 Ace Editor 中对多个光标执行方法【英文标题】:Performing methods on multiple cursor in Ace Editor 【发布时间】:2013-09-19 20:15:16 【问题描述】:我正在使用 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 which 为每个选择范围执行一个命令。 但我不知道为 args 输入什么 我认为命令的输入是“gotolinestart”,但我也不确定 我可以使用一个光标但不能用于多个光标的其他功能包括
editor.getSelection().selectLeft();
editor.navigateLeft(args.times);
任何在 ace 编辑器中处理多个光标和选择的函数示例都会非常有帮助。
【问题讨论】:
【参考方案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"
)
【讨论】:
以上是关于在 Ace Editor 中对多个光标执行方法的主要内容,如果未能解决你的问题,请参考以下文章