Ace 编辑器和 vim 键绑定:使用 :w 命令
Ace editor and vim keybindings: using :w command
我正在将 Ace Editor 集成到网络应用程序中并使用 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);
}
});
虽然这行得通,但问题是当在Vim中使用ESCape键进入"normal"模式并使用:w保存文件时,上面定义的命令的exec函数没有像 Ctrl-S/Command-S ...
一样被调用
并且键绑定-vim.js 文件抛出关于 CodeMirror.commands.save 未定义的错误 ...
我查看了 API 文档和演示,但无法找到 "correct" 解决此问题的方法。
感谢帮助。
谢谢
还没有 public 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")
})
})
大括号
import ace from 'brace';
require('brace/keybinding/vim');
editor.setKeyboardHandler('ace/keyboard/vim');
ace.config.loadModule('ace/keyboard/vim', function(module) {
var VimApi = module.CodeMirror.Vim;
VimApi.defineEx('write', 'w', function(cm, input) {
cm.ace.execCommand('save');
});
});
我正在将 Ace Editor 集成到网络应用程序中并使用 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);
}
});
虽然这行得通,但问题是当在Vim中使用ESCape键进入"normal"模式并使用:w保存文件时,上面定义的命令的exec函数没有像 Ctrl-S/Command-S ...
一样被调用并且键绑定-vim.js 文件抛出关于 CodeMirror.commands.save 未定义的错误 ...
我查看了 API 文档和演示,但无法找到 "correct" 解决此问题的方法。
感谢帮助。 谢谢
还没有 public 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")
})
})
大括号
import ace from 'brace';
require('brace/keybinding/vim');
editor.setKeyboardHandler('ace/keyboard/vim');
ace.config.loadModule('ace/keyboard/vim', function(module) {
var VimApi = module.CodeMirror.Vim;
VimApi.defineEx('write', 'w', function(cm, input) {
cm.ace.execCommand('save');
});
});