<!DOCTYPE html> <html lang="en"> <head> <title>Jody's CodeMirror</title> <link rel="stylesheet" href="lib/codemirror.css"> <link rel="stylesheet" href="addon/dialog/dialog.css"> <script src="lib/codemirror.js"></script> <script src="addon/dialog/dialog.js"></script> <script src="addon/search/searchcursor.js"></script> <script src="mode/markdown/markdown.js"></script> <script src="keymap/vim.js"></script> <style type="text/css"> .CodeMirror { border: 1px solid #eee; height: auto; } </style> </head> <body> <form><textarea id="editor" name="editor"> {{{notetxt}}} </textarea></form> <div style="font-size: 13px; width: 300px; height: 30px;">Key buffer: <span id="command-display"></span></div> <script> var editor = CodeMirror.fromTextArea(document.getElementById("editor"), { mode: "markdown", lineNumbers: "true", keyMap: "vim", showCursorWhenSelecting: true, viewportMargin: Infinity }); // Add my .vimrc stuff. CodeMirror.Vim.map('jj', '<Esc>', 'insert') CodeMirror.Vim.map(';', ':') CodeMirror.Vim.map(':', ';') //CodeMirror.commands.save = function(){ alert("Saving"); } var commandDisplay = document.getElementById('command-display'); var keys = '' CodeMirror.on(editor, 'vim-keypress', function(key) { keys = keys + key commandDisplay.innerHTML = keys }) CodeMirror.on(editor, 'vim-command-done', function(e) { keys = '' commandDisplay.innerHTML = keys }) var typingTimer; editor.on("changes", function() { clearTimeout(typingTimer); typingTimer = setTimeout( function() { //console.log(editor.getValue()); var request = new XMLHttpRequest(); request.onreadystatechange = function () { var DONE = this.DONE || 4; if (this.readyState === DONE){ console.log('ajax is done.'); } }; request.open('POST', '/', true); request.send(editor.getValue()); }, 2000 ); }); </script> </body> </html>