gpt4 book ai didi

javascript - Ace 编辑器和 vim 键绑定(bind) : using :w command

转载 作者:数据小太阳 更新时间:2023-10-29 04:10:26 25 4
gpt4 key购买 nike

我正在将 Ace Editor 集成到 Web 应用程序中,并像这样使用 vim 键绑定(bind):

 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);
}
});

虽然这行得通,但问题是当在 Vim 中使用 ESCape 键进入“正常”模式,并使用 :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")
})
})

关于javascript - Ace 编辑器和 vim 键绑定(bind) : using :w command,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28078478/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com