Javascript ace编辑器中的自动热键
我正在尝试在ace编辑器中制作一些自动热键。例如,我想将Javascript ace编辑器中的自动热键,javascript,ace-editor,Javascript,Ace Editor,我正在尝试在ace编辑器中制作一些自动热键。例如,我想将\R映射到unicode符号ℝ. 这是我的JSFIDLE: 这是我的代码: editor.getSession().setMode("ace/mode/latex"); editor.commands.addCommand({ bindKey: {win: '\R'}, exec: function(editor) { editor.insert("ℝ");
\R
映射到unicode符号ℝ. 这是我的JSFIDLE:
这是我的代码:
editor.getSession().setMode("ace/mode/latex");
editor.commands.addCommand({
bindKey: {win: '\R'},
exec: function(editor) {
editor.insert("ℝ");
var selection = editor.getSelection();
selection.moveCursorBy(0,0);
},
readOnly: false // false if this command should not apply in readOnly mode
});
如果我使用:
bindKey:{win:'Ctrl-R'}
,它确实可以工作,但我不明白为什么它不能与此代码一起工作。基本上你需要这样做
var Range = ace.require("ace/range").Range
var autohotkeys = [["\\R", "ℝ"]];
editor.commands.on("afterExec", function(e) {
if (e.command.name == "insertstring") {
var pos = editor.getCursorPosition()
var line = editor.session.getLine(pos.row).substring(0, pos.column);
for (var i = 0; i < autohotkeys.length; i++) {
var key = autohotkeys[i]
if (line.slice(-key[0].length) == key[0]) {
editor.session.replace(new Range(
pos.row, pos.column - key[0].length,
pos.row, pos.column
), key[1])
return
}
}
}
})
var Range=ace.require(“ace/Range”).Range
var自动热键=[[“\\R”ℝ"]];
编辑器.commands.on(“afterExec”,函数(e){
if(e.command.name==“insertstring”){
var pos=editor.getCursorPosition()
var line=editor.session.getLine(pos.row).substring(0,pos.column);
对于(var i=0;i