jus*_*ude 8 javascript ace-editor
我正在将Ace Editor集成到一个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');
Run Code Online (Sandbox Code Playgroud)
我也将此命令映射到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);
}
});
Run Code Online (Sandbox Code Playgroud)
虽然这有效,但问题是当使用ESCape键在Vim中进入"普通"模式,并使用:w来保存文件时,上面定义的命令的exec函数不会像调用Ctrl-S/Command那样被调用-S ......
并且keybinding-vim.js文件抛出一个错误,关于CodeMirror.commands.save没有被定义...
我查看了API文档和演示,但一直无法找到解决此问题的"正确"方法.
帮助赞赏.谢谢
a u*_*ser 10
这样做还没有公开的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")
})
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2085 次 |
| 最近记录: |