~/vimma $ less docs/firefox-shortcuts.md

page 2/5 · docs/firefox-shortcuts

Firefox's shortcuts

A key in Vimma means one thing. Where Firefox had a shortcut on a key Vim uses, such as ctrl+w or ctrl+d, Vimma switches Firefox's off, so you never close a tab when you meant to delete a word.

What moved where

Firefox's keyIs nowFirefox's action is on
ctrl+w close tabPane keys; delete a word in a text fieldx, ctrl+b shift+x, :q
ctrl+u page sourceHalf a page up; delete to the line's start when typinggf
ctrl+d bookmarkHalf a page downctrl+b a
ctrl+o open file, ctrl+i page infoBack / forward, as Vim's jump list:open file:///path; the context menu's page info
ctrl+h historyBackspace when typingctrl+shift+h
ctrl+k web searchFree for youI, then type the search
ctrl+b bookmarks sidebarVimma's prefixctrl+b shift+b

Everything else works as in Firefox: ctrl+t, ctrl+shift+t, ctrl+l, ctrl+f, ctrl+tab, alt+1…alt+9, ctrl+q and the rest.

Vim's keys in text fields

While you type, in a page's field, the URL bar, the : line or a filter, ctrl+w deletes the word before the caret, ctrl+u the rest of the line before it, and ctrl+h one character. ctrl+z undoes them. A page with its own use for the key, such as a web terminal, keeps it. Turn them off with insert_editing = false under [modal].

Choose your own

The list is yours in config.toml. Give a shortcut back to Firefox, or switch off every Firefox shortcut except a few:

[firefox]
enable = ["ctrl+w"]        # ctrl+w closes the tab again, even in a text field

# or: only ctrl+t, ctrl+l (and ctrl+q) stay Firefox's
# disable = "all"
# enable = ["ctrl+t", "ctrl+l"]

about:vimma lists every Firefox shortcut that is off right now.

Details

Everything below is Vimma's own user guide for this topic, in full: every edge case and exception. You do not need it to get started.

Firefox's own shortcuts

Firefox binds some of the keys Vimma and Vim use. So that the two never overlap, those Firefox shortcuts are off in every mode: in insert mode, in the URL bar, and when Vimma lets a key pass (ctrl+w with one pane).

KeyFirefox's action, now offWhy it is offWhere it is now
ctrl+wclose tabctrl+w h/j/k/l panes; delete a word when typingx, ctrl+b shift+x, :q
ctrl+uview page sourcehalf page up; delete to the line's startgf
ctrl+hhistory sidebarbackspace when typingctrl+shift+h (the Library's history)
ctrl+dbookmark this pagehalf page downctrl+b a
ctrl+oopen a filehistory back:open file:///path, the File menu
ctrl+ipage infohistory forwardthe page's context menu, View Page Info
ctrl+kweb searchVim's insert ctrl+k, readline's kill to the endI, then type the search
ctrl+bbookmarks sidebarVimma's prefixctrl+b shift+b (Vimma's bookmarks panel)

ctrl+e and ctrl+y (scroll a step) are on the list too; Firefox binds neither on Linux (its second web-search key is ctrl+j there, and downloads is ctrl+shift+y), so nothing changes. Every other Firefox shortcut works as before: ctrl+t, ctrl+shift+t, ctrl+n, ctrl+l, ctrl+f, ctrl+tab, alt+1..9, ctrl+plus, ctrl+q, F5, and so on.

Vimma turns them off at startup by disabling Firefox's own <key> elements (#mainKeyset), with no change to Firefox's code; about:vimma lists each one that is off (key, Firefox's id and command) under "Firefox shortcuts off", and the chords on the list that Firefox does not bind. Change the list in config.toml:

schema = 2

[firefox]
disable = ["ctrl+b", "ctrl+d", "ctrl+e", "ctrl+h", "ctrl+i", "ctrl+k", "ctrl+o", "ctrl+u", "ctrl+w", "ctrl+y"]
enable = []
  • **disable** is a list of keys, which replaces the default list (disable = [] gives every shortcut back), or "all": every Firefox shortcut with ctrl, alt or meta except ctrl+q (quit; cmd+q on macOS). "all" leaves plain keys (F5, F11, F3, Esc to stop loading) and the text keys the field itself runs (ctrl+c, ctrl+v, ctrl+z, ctrl+a). It also leaves what is not one of the window's shortcuts: tab switching (ctrl+tab, ctrl+pagedown) and the developer tools' keys.
  • **enable** is a list of keys that stay Firefox's whatever disable says: disable = "all" with enable = ["ctrl+t", "ctrl+l"] keeps just those two (and ctrl+q). A Firefox shortcut you enable on a text-field key wins over it: enable = ["ctrl+w"] closes the tab from a text field again.
  • A key must have ctrl, alt or meta, or be a function key (f5); anything else, or a key that does not parse, is an error at its line.

Keyboard layouts

A binding names a character, and the character counts, not the keys that type it. On a Finnish or German layout { is AltGr+7 on Linux and Windows and Option+shift+8 on a Mac, and it matches a { binding (copy mode's { and }) the same as on a US layout. Vimma treats a character typed with AltGr or Option as that character, the way shift is already part of ? or G. A real alt chord stays one: alt+1 is still alt+1, and a ctrl or ctrl+alt chord on a key that types its own character (ctrl+w, ctrl+alt+] on a US layout) keeps its modifiers. Windows' ctrl+alt stand-in for AltGr counts as AltGr when it types another character.

A dead key (^, ¨, ´ on a Finnish layout) types nothing by itself, so it matches no binding: GTK reports it as Dead. Bindings that use one have a second key for those layouts, such as ctrl+6 for ctrl+^ (Workspaces as Vim buffers).

Known limits

Vimma is pre-alpha. What does not work yet, or works with a catch, is listed on the known limits page:

The guide at the top is written for this site; the details are built from Vimma's docs/guide.md and bindings.md at 1050bcc (2026-10-10).

Keys on this site

Keyboard shortcuts for this website
j kscroll down, up
d uhalf a page down, up
gg Gtop, bottom
/search the docs, or filter the keys
] [next, previous docs page
g hgo home
g dgo to the docs
g kgo to keys
g igo to install
g ago to about
?this help; Esc closes it

In Vimma, ctrl+b ? lists every binding.