Overleaf Editor Custom VIM Keybindings

Bind fd to <esc> in overleaf

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @description  Bind fd to <esc> in overleaf
// @name         Overleaf Editor Custom VIM Keybindings
// @namespace    overleaf_spacemacs
// @version      1
// @match        https://www.overleaf.com/*
// @grant        GM_addStyle
// ==/UserScript==
 
(function() {
    // poll until editor is loaded
    const retry = setInterval(() => {
      	console.log("Retry")
      	console.log(window.wikiEnabled)
        if (unsafeWindow._debug_editors === undefined) return
      	clearInterval(retry)
        // get current editor instance
        const editor = unsafeWindow._debug_editors[0]
        // vim keyboard plugin
        const vimKeyboard = unsafeWindow.ace.require("ace/keyboard/vim")
        // add custom keybindings - insert mode applies on insert
        vimKeyboard.Vim.map("fd", "<Esc>", "insert")
        // set the modified keyboard handler for editor
        editor.setKeyboardHandler(vimKeyboard.handler)
        console.log("Custom key bindings applied")
    }, 1000)
})();