如何以编程方式将 Ace(vim 键盘布局)置于插入模式
How to programmatically put Ace (vim keyboard layout) into insertion mode
我正在使用具有 vim 键盘布局的 ace。
我的 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);
我正在使用具有 vim 键盘布局的 ace。 我的 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);