From b6a1a9d24d6ba72378844e2a5cb5b7b8bca3d9f2 Mon Sep 17 00:00:00 2001 From: Yunchi Luo <mightyguava@gmail.com> Date: Sat, 4 Oct 2014 14:46:49 -0400 Subject: [PATCH] [vim] Fix key handling for control characters --- keymap/vim.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/keymap/vim.js b/keymap/vim.js index a4cfd5796..355fee62d 100644 --- a/keymap/vim.js +++ b/keymap/vim.js @@ -229,7 +229,7 @@ function lookupKey(e) { var keyCode = e.keyCode; if (modifierCodes.indexOf(keyCode) != -1) { return; } - var hasModifier = e.ctrlKey || e.shiftKey || e.metaKey || e.ctrlKey; + var hasModifier = e.ctrlKey || e.shiftKey || e.metaKey; var key = CodeMirror.keyNames[keyCode]; key = specialKey[key] || key; var name = ''; @@ -259,7 +259,8 @@ // non-standard keyboard layouts. function handleKeyPress(cm, e) { var code = e.charCode || e.keyCode; - if (e.ctrlKey || e.metaKey || e.altKey) { return; } + if (e.ctrlKey || e.metaKey || e.altKey || + e.shiftKey && code < 32) { return; } var name = String.fromCharCode(code); CodeMirror.signal(cm, 'vim-keypress', name); @@ -691,6 +692,7 @@ if (/^[1-9]\d*$/.test(keys)) { return true; } var keysMatcher = /^(\d*)(.*)$/.exec(keys); + if (!keysMatcher) { clearInputState(cm); return false; } var context = vim.visualMode ? 'visual' : 'normal'; var match = commandDispatcher.matchCommand(keysMatcher[2] || keysMatcher[1], defaultKeymap, vim.inputState, context); -- GitLab