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

时间:2018-11-11 12:32:43

标签: 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对象。

或者:如何将i-按键发送给ace以启动插入模式?

1 个答案:

答案 0 :(得分:1)

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

 editor.onTextInput("i");

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