我正在将Ace编辑器集成到一个Web应用程序中,并使用vim键绑定,如下所示:
var editor = ace.edit('editor');
editor.setDisplayIndentGuides(false);
editor.setHighlightActiveLine(false);
editor.setShowFoldWidgets(false);
editor.setShowInvisibles(false);
editor.setShowPrintMargin(false);
editor.setKeyboardHandler('ace/keyboard/vim');
我也将此命令映射到Ctrl-S / Command-S,只是因为我想测试行为
editor.commands.addCommand({
name: 'saveFile',
bindKey: {
win: 'Ctrl-S', mac: 'Command-S',
sender: 'editor|cli'
},
exec: function (env, args, request) {
console.log('saving...', env, args, request);
}
});
在这种情况下,问题在于,当使用ESCape键在Vim中进入“正常”模式并使用:w保存文件时,上面定义的命令exec函数不会像Ctrl-S / Command那样被调用。 -S ...
并且keybinding-vim.js文件引发有关CodeMirror.commands.save的错误(未定义)。
我看过API文档和演示,但无法找到解决此问题的“正确”方法。
帮助表示赞赏。谢谢
尚无公共api可以执行此操作。但是你可以做
ace.config.loadModule("ace/keyboard/vim", function(m) {
var VimApi = require("ace/keyboard/vim").CodeMirror.Vim
VimApi.defineEx("write", "w", function(cm, input) {
cm.ace.execCommand("save")
})
})
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句