Version 0.20.4
Released November 16, 2016
562.3 KiB
Works with
Firefox 45.0 and later

Fixed: The n and N commands now work in Firefox’s PDF viewer.

Fixed: The eb command can now click the tab bar scroll buttons.

Fixed: Elements marked by the eb command now correctly get hints based on their area again.

Improved: The eb command now favors the browser tabs and their close buttons, giving them better hints.

Improved: The hints given to the browser tabs by the eb command are now consistent no matter how many tabs you have open. This means that the first tab always gets the same hint, the second tab always get the same hint, and so on.

Improved: Hint markers are now placed next to the text of the element if appropriate. For example, the hint marker for a button with centered text is now placed just to the left of the text rather than at the left edge of button. This is nice because it means that hint markers usually end up where you were just reading.

Improved: The positioning of hint markers has been fine-tuned by a pixel or so in some cases.

Improved: Custom styled checkboxes and radio buttons now get hint markers faster (they are now found in the first pass rather than the second).

Version 0.20.3
Released October 22, 2016
559.2 KiB
Works with
Firefox 45.0 and later

Improved: Full page scrolling now recognizes the fixed footer on medium.com.

Fixed: Scrollable element can now be focused with the f command again (not just with the ef command). (Regression since 0.19.0.)

Fixed: <escape> is no longer accidentally leaked to the page when used to blur text inputs. This allows blurring text inputs in modals without closing the modal (which <escape> commonly does otherwise).

Improved: When several hint markers have the same hint (because their links go to the same place), the largest of those links is now chosen when activating that hint. This might be noticeable via focus styling.

Version 0.20.0
Released October 2, 2016
554.8 KiB
Works with
Firefox 45.0 and later

Added: The g[ and g] commands, which let you scroll to previous and next scroll positions of the current page. This is similar to Vim’s jump list.

Added: The / mark. Pressing '/ takes you to the scroll position before the last /, a/ or g/.

Fixed: Pressing '' multiple times in a row now flips back and forth between two scroll positions as expected.

Fixed: Version 0.19.0 claimed to include the following improvement: “The hint marker for a smaller element can no longer cover the hint marker for a larger element (unless you press <c-space> to rotate them).” However, a silly mistake caused that improvement not to work. Now it does. For real.

Fixed: All VimFx commands that copy text to the clipboard are now made sure to also copy to the “selection clipboard” (if your system has such a thing). For example, if you copy text using the yv command, the p command now uses that copied text as expected.

Version 0.19.0
Released September 25, 2016
548.0 KiB
Works with
Firefox 45.0 and later

Changes and improvements to Hints modeNew feature: Hint markers can now be filtered by element text, similar to Vimium, Vimperator and Pentadactyl. This is useful for people who simply prefer that workflow, and for clicking tiny pagination links (simply type its number!).

By default, filtering by element text is done by typing uppercase characters (hold down shift!). All characters other than the hint characters are now used to filter hint markers by element text (rather than just being ignored). Do you prefer filtering by element text, but dislike typing uppercase letters? Have a look at how hint characters work to make things the other way around!

The markers with the best hint are now highlighted with a different color. You may at any time press <enter> to activate those markers (or <c-enter> or <a-enter> to change where and how to open links, just like you can hold ctrl or alt for the last hint character).

Because of the above new features, the following default Hints mode shortcuts had to be changed:

<space> → <c-space> (<s-space> is left untouched)

<s-> → <c-s-> (hold ctrl and shift to peek through hint markers)

<enter> → <up>

<c-enter> → <c-backspace>

To make it easier to see the element text, hint markers are now nudged to the left if they cover the text.

Other hint marker improvements:

Hint markers are now 20% smaller by default. While trying to match text sizes set by your operating system, they ended up a bit too large on most systems. Check out the Styling documentation if you’d like to change the font size.

Hint markers now have stronger contrast between the background color and the text color, which should make them easier to read.

The CSS for hint markers have been improved, making it easier to use custom Styling.

When several elements have the same area, the best hint is now correctly given to the first of those elements. Previously, it happened to be the other way around.

The hint marker for a smaller element can no longer cover the hint marker for a larger element (unless you press <c-space> to rotate them).

Hint markers are now better positioned when having zoomed the page in or out.

Hints mode is now more robust in general. Several race conditions have been fixed.

Other updates

Added: The ability to export, import and reset all VimFx options. There are three shiny new buttons for this in VimFx’s options page in the Add-ons Manager!

Fixed: VimFx’s find bar integration is now much more robust. Most notably, if you start typing directly after pressing / and Firefox is slow at opening the find bar, your keypresses can no longer trigger VimFx commands or Firefox built-in commands.

Improved: VimFx no longer leaks keypresses to the web page in some modes. (For example, counts in Caret mode).

Improved: The eb command now finds more clickable elements in the devtools.

Changed: vimfx.addKeyOverrides no longer lets you easily break for example Hints mode, by now only being applied to Normal mode. You might need to change your matchers from (location, mode) => ... to simply location => .... (Breaking API change.)

Changed: The object passed to custom commands (and custom modes) no longer contains a uiEvent property. Instead, there’s an event property. This property can be used the same way if you check vim.isUIEvent(event) first. (Breaking API change.)

zr → gC. zr was the only shortcut starting with z. This frees that key up for other uses.

` → '. The ` shortcut (“scroll to mark”) as well as the ` mark (“last position mark”) have both been changed to '. Both ` and ' are used in Vim. ' is a better default, because it is easier to type–both on an en-US QWERTY keyboard and, more importantly, on some international layouts, such as the sv-SE QWERTY layout. Note: If you miss Firefox’s default ' shortcut to open the Quick Find bar (which is now overridden), remember that VimFx provides g/ which does the same thing. (You can of course also change VimFx’s shortcuts.)

Version 0.17.4
Released July 11, 2016
492.1 KiB
Works with
Firefox 45.0 and later

Improved: The usage of modifier keys in Hints mode is now shown in VimFx’s Keyboard Shortcuts help dialog. The functionality has been there for a long time, but should now be easier to find. Thanks to our awesome translators, the new help text is already available in most supported locales!

Improved: If you submit a form while still being inside one of its text inputs, that text input is now automatically blurred. This lets you use VimFx commands while waiting for the form to submit without having to press <escape> first.

Improved: The gu command now works better on some pages, by preserving a trailing slash. Thanks to @sinkuu!

Improved: VimFx now recognizes text areas in the TYPO3 CMS.

Improved: The <escape> command and the toolbar button now let you escape back to Normal mode if VimFx ever gets stuck thinking that you are typing in a text input.

Version 0.17.0
Released June 8, 2016
481.0 KiB
Works with
Firefox 45.0 and later

Fixed: VimFx no longer scrolls smaller elements on a page instead of the entire page on some sites.

Improved: The /, n and N have been drastically sped up (when find_from_top_of_viewport is on). Previously, they appeared to freeze on some sites, but not anymore.

Improved: You can no longer accidentally trigger VimFx between pressing / and the find bar input being is focused.

Improved: The n and N commands are now more robust.

Improved: “Fullscreen” buttons and “Copy to clipboard” buttons can now be activated the f command. Thanks to Alan Wu (@XrXr)!

Changed: After having pressed m or ` VimFx no longer waits indefinitely for you to press a mark key. Instead, the timeout option is honored.

Changed: After having pressed m or ` you can now press <escape> to abort those commands.

Changed: Find mode is no longer shown in VimFx’s Keyboard Shortcuts help dialog, to reduce clutter. (This can be changed through custom styling.)

Changed: The ? command as well as the toolbar button now toggle VimFx’s Keyboard Shortcuts help dialog (instead of always showing it, even if it was already shown.)

Changed: Counts are now ignored in Ignore mode. Previously, pressing number keys would both send those key presses to the page and contribute to the count for commands (showing up in the bottom-right corner). This is no longer the case.

Version 0.16.1
Released May 29, 2016
477.4 KiB
Works with
Firefox 45.0 and later

Fixed: The text input focus detection problems introduced in 0.15.1, which sometimes caused VimFx commands to be triggered while typing in text inputs, have been fixed.

Improved: If you press n or N when there are are no matches for your search, the find bar is no longer opened. Only a notification is shown. The reliability of those notifications has also been improved.

Improved: Hints mode now finds more links.

Improved: Pressing <c-enter> in Hints mode now includes more elements.

Version 0.15.0
Released May 18, 2016
475.2 KiB
Works with
Firefox 45.0 and later

Improved: Hint markers now appear up to twice as fast on many pages. This is done by creating the hint markers in two phases. Most are created in the first, fast, phase. The rest take the same time as older VimFx versions to show up.

Fixed: VimFx no longer triggers commands while typing in fancy text inputs on some sites, such as when composing a new tweet on Twitter. (See also the blur_timeout pref.)

Changed: The <c-enter> Hints mode command no longer replaces all hint markers on screen (with new ones for all elements on screen). Instead, it toggles your current hint markers with ones for all other elements on screen.

Changed: There was a breaking change to the vimfx.setHintMatcher function of the frame.js config file API. It no longer receives and returns an object (of the shape {type, semantic}), but instead simply receives and returns the type of the element.

Version 0.14.3
Released May 8, 2016
467.9 KiB
Works with
Firefox 45.0 and later

Fixed: Smooth scrolling speed is now correct again in newer Firefox versions.

Fixed: The yv Caret mode command now only copies text that you can see on screen (not any hidden text that might be on the page), making it truly work like zv followed by y, as intended. This problem was very noticeable on Slack. This also improves copying of 'contenteditable' elements using yf.

Fixed: <escape> and arrow key handling as well as hint markers in the devtools now work correctly again in newer Firefox versions.

Fixed: VimFx no longer makes it impossible to open the Developer Toolbar.

Improved: VimFx now ignores <numlock> and <capslock>. If your keyboard sends <numlock> before some symbols, such as <numlock>$ instead of just $, shortcuts like gx$ now work out of the box. This also means that you can use <capslock> instead of <shift> when typing the J in gJ, for example.

Version 0.14.2
Released May 8, 2016
467.9 KiB
Works with
Firefox 45.0 and later

Fixed: Smooth scrolling speed is now correct again in newer Firefox versions.

Fixed: The yv Caret mode command now only copies text that you can see on screen (not any hidden text that might be on the page), making it truly work like zv followed by y, as intended. This problem was very noticeable on Slack. This also improves copying of 'contenteditable' elements using yf.

Fixed: <escape> and arrow key handling as well as hint markers in the devtools now work correctly again in newer Firefox versions.

Fixed: VimFx no longer makes it impossible to open the Developer Toolbar.

Improved: VimFx now ignores <numlock> and <capslock>. If your keyboard sends <numlock> before some symbols, such as <numlock>$ instead of just $, shortcuts like gx$ now work out of the box. This also means that you can use <capslock> instead of <shift> when typing the J in gJ, for example.

Version 0.14.1
Released April 30, 2016
466.3 KiB
Works with
Firefox 45.0 and later

Added: Caret mode, which lets you copy text from web pages using the keyboard.

Improved: The Find commands (such as /, n and N) now search from the top of the viewport, instead of from the top of the document, which is more Vim-like and less disorienting. To read more about it (or to return to the Firefox default behavior) please see the find_from_top_of_viewport pref.

Version 0.13.2
Released April 8, 2016
427.7 KiB
Works with
Firefox 45.0 and later

Improved: The “last position mark” ` now works more reliably.

Improved: More video players are now recognized. Many video players lets you press <space> while focused to toggle play/pause. VimFx tries to detect if the currently focused element is a video player. If so, <space> is passed to the video player instead of scrolling the page. (For those interested, see also the adjustable_element_keys pref.)

Version 0.13.0
Released March 19, 2016
420.1 KiB
Works with
Firefox 45.0 and later

Added: The T command, which opens a new tab after the current.

Changed: The gl command now deals with visited tabs only.

Added: The gL command, which deals with unvisited tabs only, in oldest-first order. Use this to step through your unvisited background tabs in the order you opened them (for example using the F command).

Improved: The gi command no longer tries to focus the last focused text input if it has been removed from the page. If so, it finds a new one instead.

Fixed: You can now type in sidebar text inputs (such as in the history sidebar) without having to switch to Ignore mode.

Changed: If you enter Ignore mode you will now stay in Ignore mode in that tab until you explicitly exit it (by pressing <s-escape>), even if you reload the page or follow a link. If Ignore mode was entered automatically because of the blacklist, though, you will be automatically returned to Normal mode if the URL changes to a non-blacklisted page.

Added: VimFx can now automatically enter and exit Ignore mode based on the currently focused element. Currently, the wasavi extension as well as CodeMirror in Vim mode are detected. Both of those provide Vim-style editors. This allows sending <escape> to those editors in order to exit their Insert mode, without blurring the editor.

Improved: CodeMirror editors now get better hints, keeping the cursor where you left it.

Improved: Many audio and video elements are now recognized as “adjustable”, allowing you to press for example <space> on them to toggle play/pause, without scrolling the page.

Improved: Scrolling by pages, such as using the <space> command, now takes fixed heaears and footers into account, just like Firefox does.

Fixed: Access keys now work correctly in context menus in the devtools and about:config.

Improved: The arrow keys now Just Work in the devtools, even if you have bound them to VimFx commands.

Changed: The public API has been removed, and turned into the Config file API. If you were already using a config file, it will no longer work. You need to set up a new one, but you should be able to simply copy and paste the contents of the old one into the new one. Read the config file documentation for more information.

Changed: There are a few minor breaking changes to the API, though I doubt it will affect anyone.

If you use vimfx.on, you probably need to adjust the arguments of the your callbacks. They are now always passed an object of data, instead of sometimes passing the data directly.

Fixed: The toolbar button’s icon is now correctly sized when setting layout.css.devPixelsPerPx to 2. Thanks to Robert Ma (@Hexcles) and Dale Whinham (@dwhinham)!

Fixed: Find commands now work when the find bar was opened before the page had finished loading.

Improved: Lots of internal improvements. This should make VimFx faster, more reliable and more responsive.

All keyboard event handling (except <late> shortcuts) are now handled in the UI process, instead of mostly in each tab’s web page content process. This should make VimFx’s shortcuts more reliable and responsive.

Removed all synchronous message passing (execpt for <late> keypresses). Mozilla recommends using them only where absolutely necessary. Turns out VimFx doesn’t need them anymore!

The f commands are now more reliable. Before, they could crash on rare occasions (on certain web pages), but that is less likely now.

Version 0.12.0
Released February 3, 2016
385.8 KiB
Works with
Firefox 43.0 and later

Improved: More clickable elements are now recognized. Most notably, elements with click event listeners added by JavaScript now get hints.

Improved: Autofocus prevention after using the [ and ] commands.

Added: In VimFx’s Keyboard Shortcuts help dialog (which can be opened by pressing ?) you can now click on any command to open VimFx’s settings page in the Add-ons Manager and automatically select the text input for that command, letting you edit its shortcuts. Tip: Use the zF command to click without using the mouse.

Changed: Autofocus is no longer prevented in Firefox internal pages, such as about:preferences, about:addons and about:config (as well as other XUL pages).

Fixed: VimFx and the Beyond Australis extension do not conflict with each other anymore.

Fixed: The gH command no longer nags you about “No back/forward history” even though there is.

Added: The gX command, which opens the Recently Closed Tabs menu at the middle of the screen.

Added: The keys you’ve typed so far of a command, as well the count, are now shown in a notification. (You may disable this using the notify_entered_keys pref.)

Improved: When commands don’t do anything, they show a notification instead, letting you know that you actually pressed the right keys. For example, if you press f but there are no markable elements visible, a notification is shown telling you so, instead of silently doing nothing.

Improved: <space> now scrolls about a line less than a full page, just like Firefox does by default. d scroll about half a line less (by default), so that pressing d twice works like pressing <space> once. (See the scroll.full_page_adjustment and scroll.half_page_adjustment prefs for more information.)

Improved: gi now only selects all text in its text input if you haven’t focused a text input yet (allowing you to easily replace pre-filled text), instead of always doing so. Otherwise, it now puts the cursor where you left off typing the last time.

Fixed: The f commands now put the cursor where you left off typing the last time when focusing a text input. Previously, they accidentally selected all text in the text input (use zf for that behavior).

Fixed: Yet a scrolling fix. VimFx’s scrolling commands should now “just work” on even more sites.

Fixed: AltGr should now work out of the box on Windows. (See the ignore_ctrl_alt pref for more information.)

Removed: The el-GR, hu and pl locales were sadly too out of date to be useful, and nobody has shown interest in updating them, so they were removed.

Updated locales: id, de and zh-CN. Thanks to Yoppy Halilintar, @just-barcodes and @mozillazg!