{"id":17675250,"url":"https://github.com/matthewsot/docs-vim","last_synced_at":"2025-07-01T05:04:02.780Z","repository":{"id":47266792,"uuid":"113246054","full_name":"matthewsot/docs-vim","owner":"matthewsot","description":"Use Google Docs like vim. Sorta.","archived":false,"fork":false,"pushed_at":"2021-09-06T03:58:16.000Z","size":88,"stargazers_count":113,"open_issues_count":2,"forks_count":14,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-04-15T11:54:41.602Z","etag":null,"topics":["google-docs","vim"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/matthewsot.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-12-05T23:52:28.000Z","updated_at":"2024-12-13T19:27:23.000Z","dependencies_parsed_at":"2022-09-14T08:41:16.347Z","dependency_job_id":null,"html_url":"https://github.com/matthewsot/docs-vim","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/matthewsot/docs-vim","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matthewsot%2Fdocs-vim","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matthewsot%2Fdocs-vim/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matthewsot%2Fdocs-vim/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matthewsot%2Fdocs-vim/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/matthewsot","download_url":"https://codeload.github.com/matthewsot/docs-vim/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matthewsot%2Fdocs-vim/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262900087,"owners_count":23381657,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["google-docs","vim"],"created_at":"2024-10-24T07:10:31.499Z","updated_at":"2025-07-01T05:04:02.755Z","avatar_url":"https://github.com/matthewsot.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# docs-vim\n## Installation (Chrome)\n```\ngit clone https://github.com/matthewsot/docs-vim.git\ncd docs-vim\ngit submodule init\ngit submodule update\n```\n\n* Go to `chrome://extensions/` in Chrome or Chromium.\n* Enable \"Developer Mode\". (Right top of the screen)\n\n![image](https://user-images.githubusercontent.com/49868160/118260804-09b5ff00-b4b3-11eb-820a-58339ec95f33.png)\n* Click \"Load unpacked\". (Left top of the screen)\n\n![image](https://user-images.githubusercontent.com/49868160/118261175-7f21cf80-b4b3-11eb-97b0-b2429a88b12c.png)\n* Select the docs-vim folder and click \"Open\"\n\n## Update\nApparently Google is [making significant changes to the Docs\neditor](https://workspaceupdates.googleblog.com/2021/05/Google-Docs-Canvas-Based-Rendering-Update.html),\nso this will likely stop working in the next few months.\n\n## Overview\nThis simulates very limited versions of vim's insert and normal modes on Google\nDocs.\n\nCurrently supported features:\n* Insert mode:\n    * Typing\n    * Escaping to normal with Esc\n    * Escaping to normal with a two-key combination\n* Normal mode\n    * Getting to insert mode with the \"i\" key\n    * Moving with the home-row keys\n    * Repeated motions using the number keys\n    * Delete a single character with the \"x\" key\n    * Enter visual mode with the \"v\" key\n* Visual mode\n    * Getting to normal mode with Esc\n    * Moving with the home-row keys\n    * Repeated motions using the number keys\n    * Delete selected text with the \"x\" key\n* Chrome (tested on 63.0)\n* (Not really) Firefox\n    * It will install, but many of the features work incorrectly.\n    \n## How?\nGlad you asked - this project is built with the [docs-plus\nlibrary](https://github.com/matthewsot/docs-plus), which enables rich\ninteractions with the Google Docs editor. Improvements made to the library here\n(particularly those in the ``docs-plus-plus.js`` file) will probably eventually\nbe pushed back up to the main docs-plus library.\n\n## Keys\nCurrently set up to work with my DVORAK layout, these are the default keybindings:\n\n* Insert Mode:\n    * Esc: enter normal mode\n    * hn: enter normal mode\n* Normal Mode:\n    * i: enter insert mode\n    * dhtn: move\n\nNote that most of these can be changed in ``docs-vim.js``. For example, if you\nwant to use the more common QWERTY keybindings, you'd change to:\n\n```\nvim = {\n    ...\n    \"keys\": {\n        \"move\": \"hjkl\",\n        \"escapeSeq\": \"jk\",\n    }\n};\n```\n\nNear the top of ``docs-vim.js``.\n\n## Future Features\nI don't really use all that much of vim's shortcuts, but a few particular things I want to add\neventually:\n\n* Selections with shift-V (visual line mode)\n* Command mode with find and replace, go to line #, etc.\n* Quick find with /\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatthewsot%2Fdocs-vim","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmatthewsot%2Fdocs-vim","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatthewsot%2Fdocs-vim/lists"}