This extension adds (some) VIM keyboard shortcuts to Workflowy.com.
These keyboard shortcuts are similar, if not identical, in their behaviour to the ones that can be found in the text editor called VIM. All VIM behaviours are not supported yet. New shortcuts are continously added.
Vimflowy will block keystrokes which haven't been bound in all modes - except insert mode. However, keys that have been modified with ALT/CTRL/META (but not SHIFT) are allowed to passthrough. For example <Shift>d
will be blocked but <Ctrl>d
or <alt>d
will be allowed to pass through.
- Normal mode
j
: Move down one itemk
: Move up one itemh
: Move cursor leftl
: Move cursor righti
: Insert before currently selected charactera
: Insert after currently selected characterI
: Insert at the beginning of the lineA
: Insert after the end of the line/
: Start searcho
: Create a new bullet below current line and go into insert modeO
: Create a new bullet above current line and go into insert modee
: move to end of wordw
: move forward one wordb
: move backwards 1 word0
,B
,^
: Move cursor to the first character of the lineE
,$
: Move cursor to the last character on the linegg
: Go to top most root item on pageg
: Go to root item of the currently focused listG
: Go to the bottom of focused listGG
: Go to the bottom of current list, recursivly#
: search for the word under the cursor. Works as tag search.u
: Undo<Ctrl>r
: Redoy
: yank (copy or mirror) focused items (and children)Y
: yank (mirror) focused items (and children)p
: paste yanked items below focused itemP
: paste yanked items above focused item<alt>l
: Zoom in on focused node 1 step and retain focus on that node<alt>h
: Zoom out of focused node 1 step and retain focus on that node<Alt>J
: Move the current line down<Alt>K
: Move the current line up<ctrl>h
: zoom out (identical behaviour as WF zoom out - but instant)<ctrl>l
: zoom in (identical behaviour as WF zoom in - but instant)<ctrl>j
: Jump to node via EasyMotion<Ctrl>c
: Copies focused item to clipboard; enabling you to paste items between browsers.V
,v
: Enter visual mode>
,<alt>L
,Tab
: indent item(s)<alt>H
,<shift>Tab
: outdent items<
: outdent items (and selected kids once the parent item hits the wall)<Alt>Enter
: Will open first URL found in the focusedItems name or note. Works with Workflowys inline linking feature.<Shift><Alt>Enter
: zoom in on a mirrored items parent. (use backspace to get back again)Space
,z
: toggle expand/collapse on focusedItem<ctrl>Space
: toggle expand/collapse on all items under currentItemRootEnter
: Zoom in on focused node - and place current item in memoryBackspace
: zoom in on item which was place in memory when using 'Enter'<alt>§
,<alt>`
: toggle work time counter; displaying num (8 hour) days and num (5 day) Weeks worth of tags. (use #1d, #2h, #30m tags for it to count)§
,`
: sort completed items according to time and place them at the bottomr
: replace character under cursorx
: remove character under cursors
: remove character under cursor + insert modef
: find character after cursor in current line. Ex: fb will find the 1st b occurence, 3fb will find 3rd b occurence.t
: same as 'f' but cursor moves to just before found characterF
: backwards version of 'f'T
: backwards version of 't'S
: substitute entire line - deletes line, enters insertion modeC
: change to end of lined$
,D
: delete to end of linedd
: yank and delete the current item(s)de
: cut from cursor location to the end of the current worddm
: detach mirrorce
: de + goToInsertModedw
: cut from cursor location to next wordcw
: dw + goToInsertModedn
: delete notecn
: change note == delete note + insert modediw
: delete word under cursor. Works with a numeric 0-9 prefix to make the command repeat. 4ciw, for example.ciw
: deletes word under cursor + insert-mode. Works with a numeric 0-9 prefix.daw
: deletes word under the cursor and trims off any white space at the end. Works with a numeric 0-9 prefix.
- insert mode
<jk>
: Enter Normal mode
- visual mode
>
,<alt>L
,Tab
: indent item(s) + enter normal mode<alt>H
,<shift>Tab
: outdent items + enter normal mode<
: outdent items (and selected kids once the parent item hits the wall) + enter normal modeV
,v
,<Esc>
: Enter normal modey
: yank (copy or mirror) selected items and enter normal modeY
: yank (mirror) selected items and enter normal moded
: yank, delete selected items and enter normal modeD
: delete notes on all selected itemsG
: Adds the siblings below to the selectiong
: Adds the siblings above to the selectionGG
: Adds the ancestors below to the selectiongg
: Adds the ancestors above to the selection<Alt>J
: Move the current selection down<Alt>K
: Move the current selection upu
: Undo + exit visual mode<Ctrl>r
: Redo<Ctrl>c
: Copies selected items to clipboard; enabling you to paste items between browsers.Space
: toggle expand/collapse on focusedItem<ctrl>Space
: toggle expand/collapse on all items under currentItemRoot
- all modes
<Esc>
,<ctrl>[
: Enter Normal mode<Ctrl>Dead
,<Ctrl>;
,<Ctrl>:
: Use Workflowys JumpToItemMenu<Ctrl>k
: Edit links when focusing on a link. Secondary behaviour is to prompt the Workflowys JumpToItemMenu<ctrl>Enter
: Toggle Completed on seletion
In the bottom left corner there is a mode indicator that shows what mode you are in currently.
You'll have to edit keybinding.js or transparentKeybindings.js if you want to rebind or add new shortcuts.
mac users: if you want to bind stuff to Cmd you'll have to type "meta-" instead. "meta-j" instead of "cmd-j" for example.
If you're using cvim (or any other Chrome extensions that install modal keybindings), make sure you add http*://*.workflowy.com/*
to the excluded URLs.
The extension is available on the chrome web store
But you can also download and install an unofficial version:
- Clone this repo (or your fork) somewhere on your filesystem.
- go to
chrome://extensions/
- click 'Load unpacked extension...' button right below 'Extensions' header in the top left corner of the page
- point at the vimflowy repo directory
- refresh workflowy page
The extension has mainly been tested on nordic QWERTY keyboards running windows 10, but it should work on other keyboard configurations as well. Please report any bugs you might find at Issues