javascript - 如何以编程方式将 Ace(vim 键盘布局)置于插入模式

标签 javascript ace-editor

我正在使用 ace 和 vim 键盘布局。 我的 JavaScript 是

    this.editor = window.ace.edit(this.$el.id)
    ace.config.loadModule("ace/keyboard/vim", function(m) {
        var VimApi = ace.require("ace/keyboard/vim").CodeMirror.Vim
        //here: put editor in insertion mode :startinsert
        VimApi.defineEx("write", "w", function(cm, input) {
            //cm.ace.execCommand("save");
            console.log("My command :w triggered");
        })
    })

如何将 vim 置于插入模式?

或者换句话说:如何触发 https://github.com/ajaxorg/ace/blob/master/lib/ace/keyboard/vim.js#L3032 中定义的 enterInsertMode 操作?我无法访问所需的 actions 对象。

或者:如何向 ace 发送 i-keypress 以便启动插入模式?

最佳答案

似乎没有任何官方 API 可以执行此操作,但使用以下任一方法可在当前版本的 ace 中使用:

 editor.onTextInput("i");

 var cm = editor.state.cm;
 editor.$vimModeHandler.actions.enterInsertMode(cm, {}, cm.state.vim);

关于javascript - 如何以编程方式将 Ace(vim 键盘布局)置于插入模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53248799/

相关文章:

javascript - 如何使用 JavaScript 删除小数点后的数字?

javascript - Ace 代码编辑器动态设置语言

javascript - React Ace 编辑器标记突出显示整行,甚至定义了 startCol 和 endCol 以限制列

javascript - iot.listDimensions 不是函数

javascript - 如何知道一个字符串以javascript中的特定字符开始/结束?

ace-editor - 是否有自动完成中使用的对象属性的文档列表?

jquery - 在 Ace Editor 中键入空格会产生特殊字符

ace-editor - 如何在 Ace Editor 中找到当前加载的模式(语法)?

javascript - Mozilla WebExtensions contextMenus.create 不工作

javascript - 模拟测试 http - angular2