// ==UserScript== // @name Overleaf Editor Custom VIM Keybindings // @namespace http://tampermonkey.net/ // @version 0.1 // @match https://www.overleaf.com/project/* // @grant none // ==/UserScript== (function() { 'use strict'; window.addEventListener("UNSTABLE_editor:extensions", (event) => { const { CodeMirror, CodeMirrorVim, extensions } = event.detail; // add custom keybindings - insert mode applies on insert CodeMirrorVim.Vim.map("jk", "", "insert"); // normal mode applies while escaped CodeMirrorVim.Vim.map("j", "gj", "normal"); CodeMirrorVim.Vim.map("k", "gk", "normal"); CodeMirrorVim.Vim.map("j", "gj", "visual"); CodeMirrorVim.Vim.map("k", "gk", "visual"); CodeMirrorVim.Vim.map("H", "g^", "normal"); CodeMirrorVim.Vim.map("L", "g%", "normal"); CodeMirrorVim.Vim.map("H", "g^", "visual"); CodeMirrorVim.Vim.map("L", "g%", "visual"); //delete the {}, [] CodeMirrorVim.Vim.map("sd{", "di{va{p", "normal"); CodeMirrorVim.Vim.map("sd[", "di[va[p", "normal"); }); })();