diff --git a/keymap/vim.js b/keymap/vim.js index 2aa6e0f795fa55e161d36b3f051b8c8fb4de3fd6..bbff4d171685e9f52cf0d7622a0287e1ed1a786a 100644 --- a/keymap/vim.js +++ b/keymap/vim.js @@ -224,6 +224,11 @@ cm.setOption("keyMap", "vim-insert"); } + function dialog(cm, text, shortText, f) { + if (cm.openDialog) cm.openDialog(text, f); + else f(prompt(shortText, "")); + } + // main keymap var map = CodeMirror.keyMap.vim = { // Pipe (|); TODO: should be *screen* chars, so need a util function to turn tabs into spaces? @@ -294,6 +299,14 @@ popCount(); CodeMirror.commands.goLineStart(cm); }, + "Shift-;": function(cm) { + var exModeDialog = '<input type="text" />'; + dialog(cm, exModeDialog, 'ex mode:', function(command) { + if (command.match(/\d+/)) { + cm.setCursor(command-1, cm.getCursor().ch); + } + }); + }, nofallthrough: true, style: "fat-cursor" };