0

我正在尝试向代码镜像添加一行“热键”。对于正常情况<textarea id=code>,我可以这样做: insertAtCursor(code,'hello') 使用:

function insertAtCursor(textArea,text) 
{
    if (textArea.setSelectionRange)
    {
        textArea.value = textArea.value.substring(0,textArea.selectionStart) + text + textArea.value.substring(textArea.selectionStart,textArea.selectionEnd) + textArea.value.substring(textArea.selectionEnd,textArea.value.length);
    } 
    else if (document.selection && document.selection.createRange) 
    {
        textArea.focus();
        var range = document.selection.createRange();

        range.text = text + range.text;
    }
}

我怎么能用 CodeMirror 实例做到这一点?

4

2 回答 2

1
function insertAtCursor(instance, text) {
  instance.replaceSelection(text);
}
于 2012-10-14T21:11:11.147 回答
1

这是一个小示例,您要在其中插入一个额外的字符以进行自动完成。如果用户开始输入 a (您想添加额外的)并将光标设置回一个位置,以便他可以直接继续输入。

editor.on('keypress', function(cm,e){
  console.log("keypress: "+e.charCode);
  if(e.charCode === 40) { //check for ( and autocomplete with ) while placing cursor inside ()
      e.preventDefault(); //ignore this key
      editor.replaceSelection("()"); //replace with ()
      editor.setCursor(editor.getCursor().line,editor.getCursor().ch-1); //set cursor back one position
      return false;
   }
});
于 2015-11-18T13:47:35.657 回答