Javascript 代码镜像键映射vim<;电子稳定控制系统>;不起作用
我正在我的项目中使用CodeMirror编辑器。我同时使用了Javascript 代码镜像键映射vim<;电子稳定控制系统>;不起作用,javascript,vim,codemirror,keymapping,Javascript,Vim,Codemirror,Keymapping,我正在我的项目中使用CodeMirror编辑器。我同时使用了/addon/display/fullscreen.js和/keymap/vim.js脚本,并像这样声明了CodeMirror实例 var editor = CodeMirror.fromTextArea(document.getElementById("code"), { keyMap: "vim", extraKeys: { "F11": function(cm) { cm.setOption("full
/addon/display/fullscreen.js
和/keymap/vim.js
脚本,并像这样声明了CodeMirror实例
var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
keyMap: "vim",
extraKeys: {
"F11": function(cm) {
cm.setOption("fullScreen", !cm.getOption("fullScreen"));
},
"Esc": function(cm) {
if (cm.getOption("fullScreen")) cm.setOption("fullScreen", false);
}
}
});
extraKeys: {
"F11": function(cm) {
cm.setOption("fullScreen", !cm.getOption("fullScreen"));
},
"Esc": function(cm) {
if (cm.getOption("fullScreen")) cm.setOption("fullScreen", false);
if (cm.getOption("keyMap") == "vim"){
//Call handleEsc()
}
}
}
如图所示,我已映射“Esc”键以退出全屏显示。现在,该键映射覆盖了/keymap/vim.js
脚本中定义的“Esc”键映射,用于将模式从insert
更改为visual
我检查了脚本,找到了这个函数
function handleEsc() {
if (key == '<Esc>') {
// Clear input state and get back to normal mode.
clearInputState(cm);
if (vim.visualMode) {
exitVisualMode(cm);
} else if (vim.insertMode) {
exitInsertMode(cm);
}
return true;
}
}
但我不知道如何让它工作。任何帮助都将不胜感激。如果您返回
codemirr.Pass
键处理程序,将尝试进一步的处理程序。因此,在这种情况下,只要在您的条件(全屏)不适用时执行此操作即可
外键:{
Esc:功能(cm){
if(cm.getOption(“全屏”))cm.setOption(“全屏”),false;
否则返回CodeMirror.Pass;
}
}
终于想出了一个快速的解决办法。我删除了“Esc”键映射,并使用Codemirror的keydown
事件,如下所示:
CodeMirror.on(editor, 'keydown', function(cm,event) {
if(event.keyCode==27){
if(editor.getOption("fullScreen"))
toggleFullScreen();//exit full screen
}
});
通过这种方式,我不必使用extraKeys
方法,因此vim“Esc”不会被覆盖并仍在工作。为什么不试试呢?我添加了一些代码——这是对示例extraKeys
选项的一个小小修改。