{"id":18187727,"url":"https://github.com/kardwen/firefox-smooth-vi","last_synced_at":"2026-01-29T10:03:02.265Z","repository":{"id":259252587,"uuid":"876767895","full_name":"kardwen/firefox-smooth-vi","owner":"kardwen","description":"Simple and smooth vi mode for viewing web pages","archived":false,"fork":false,"pushed_at":"2024-11-04T15:00:41.000Z","size":105,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-09T22:44:18.266Z","etag":null,"topics":["add-on","add-ons-for-firefox","firefox","firefox-addon","firefox-extension","manifest-v3","vi","vim"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kardwen.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-10-22T14:22:06.000Z","updated_at":"2024-11-04T23:11:18.000Z","dependencies_parsed_at":"2024-11-04T15:33:29.660Z","dependency_job_id":null,"html_url":"https://github.com/kardwen/firefox-smooth-vi","commit_stats":null,"previous_names":["kardwen/firefox-smooth-vi"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/kardwen/firefox-smooth-vi","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kardwen%2Ffirefox-smooth-vi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kardwen%2Ffirefox-smooth-vi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kardwen%2Ffirefox-smooth-vi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kardwen%2Ffirefox-smooth-vi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kardwen","download_url":"https://codeload.github.com/kardwen/firefox-smooth-vi/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kardwen%2Ffirefox-smooth-vi/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28875446,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-29T09:47:23.353Z","status":"ssl_error","status_checked_at":"2026-01-29T09:47:19.357Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["add-on","add-ons-for-firefox","firefox","firefox-addon","firefox-extension","manifest-v3","vi","vim"],"created_at":"2024-11-03T02:03:00.537Z","updated_at":"2026-01-29T10:03:02.245Z","avatar_url":"https://github.com/kardwen.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg src=\"smooth_vi_128.png\" height=\"64\"\u003e\n\n# smooth vi\n\nThis extension for Firefox provides a minimal *vi mode* for viewing web pages that requires no configuration to minimize conflicting keybindings. *vi mode* is activated by pressing `(Esc)`, similar to the way you can navigate in vi in normal mode. In *vi mode*, you can scroll using the traditional vi keybindings. The movement is smooth and accelerates as you hold down a key. This is similar to the default behaviour of the arrow keys in Firefox.\n\nThe uniqueness of this approach is that any other unbound key, mouse click or touch input will deactivate *vi mode*, so you're unlikely to run into the problem of having to create individual configurations for many web pages (in fact, you can't). It does provide a nice way of reading web pages with a comfortable keyboard layout, without having to use the arrow keys, touchpad or mouse very often. \n\nAdditional features:\n\n* *vi mode* status indicator for toolbar\n* Scrolling speed and acceleration settings\n\n*Add the extension to Firefox on [addons.mozilla.org](https://addons.mozilla.org/firefox/addon/smooth-vi/)*\n\n## Keybindings\n\n```text\n(Esc) Activate vi mode\n(h)   Move left\n(j)   Move down\n(k)   Move up\n(l)   Move right\n(g)   Move to the top of the page\n(G)   Move to the bottom of the page\n(i)   Deactivate vi mode\n\nAny other key, with the exception of (Shift),\ndeactivates vi mode again.\n```\nThe interesting detail here is that under the hood, events\nfor keys other than those specified above from `(h)` to `(i)`\nare not captured. This means, for example, that you can type `(t)`\non GitHub in *vi mode* to get to the search bar and at the same time\ndisable *vi mode* to search for a file\n(more GitHub shortcuts can be found [here](https://docs.github.com/en/get-started/accessibility/keyboard-shortcuts)).\n\nNote that add-ons are disabled on sites for managing Firefox settings and add-ons.\n\n## Limitations\n\nIt will conflict with dedicated vi or Vim (vi improved) emulations for editing text on web pages, because with those implementations `(Esc)` is probably used to enter command mode to move the cursor inside a text field. On the contrary, this add-on uses `(Esc)` to enter a mode for moving the viewport of the web page.\n\nOn pages that bind an action to `(Esc)`, the functionality of the page is usually not restricted, because *vi mode* will only be briefly active and can be immediately disabled by following `(i)`.\n\n## Development\n\nIf you want to install this add-on locally, you must first bundle it by running the `bundle` script (for Unix) in the repository. The program `zip` is required to run it: \n\n```sh\n./bundle\n```\n\nA local extensions can be added to Firefox (it will remain active until Firefox is restarted) when navigating to `about:debugging#/runtime/this-firefox`. Next click on \"Load Temporary Add-on...\" and select `dist/smooth_vi.zip`. Then make some changes, run `./bundle` and click on \"Reload\".\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkardwen%2Ffirefox-smooth-vi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkardwen%2Ffirefox-smooth-vi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkardwen%2Ffirefox-smooth-vi/lists"}