If you are a Vim user and you edit a lot of Markdown files, this is the app for you!
On iPad and Mac, you edit and preview Markdown side-by-side. The editor has Vim emulation and automatically scrolls the Markdown preview as you scruff around in the editor.
You can also see all the headings in the Markdown document and scroll both panes to a particular heading with a tap in the Outline Viewer.
Because real Vim is hard to get working on iOS, this app uses vim emulation. That means not all features you may be used to are supported. Learn more about Vim emulation.
There are two ways to use cloud storage. Choose one or the other (but not both):
Use the Folder Browser to select which Markdown file to edit. By default the Folder Browser uses the app’s Documents folder, but if you select a custom folder in Settings it will be used instead.
While Cloud Sync of a selected folder is supported for these apps, iOS does not reliably sync non-iCloud drive folders in the background. Unfortunately that means you will have to open your drive folder in the Files app to force a sync each time you make a change. After you do, your remote changes should appear automatically in the editor.
Using iCloud instead is recommended if you want multi-device sync.
When your external keyboard is disconnected, the app will go to insert mode so you can still edit files with your onscreen keyboard. Note that you cannot use vim’s normal mode with an onscreen keyboard. Also note that if you have devices connected that pretend to be keyboards (some mice do this), disconnecting your keyboard will not trigger insert mode.
On iPad, there is also a button in the toolbar to toggle the onscreen keyboard. You might also have to mess with the keyboard settings at the bottom of the screen to get the onscreen keyboard to show.
Wrap Markdown content with Vim fold markers {{{...}}} to hide it in the preview (use the command ,[ in visual mode to quickly fold selected text).
There are currently bugs and omissions in the Vim emulation, but it will improve with time. If there is a bug or omission in the Vim emulation that is bothering you, please complain to markdown-vim@luminous-services.com. I will fix any problems reported.
The leader key and leader key shortcuts are not configurable in this app, but there are a few pre-defined shortcuts that you might want to use:
,b - Open folder browser,[ - Wrap current text in {{{…}}} (vim fold)This app has been tested on iPhones, 11” iPads, and 13” iPads.
If you have questions or concerns, please reach out to me at: markdown-vim@luminous-services.com
:w - Write (save) current file:e - Revert current file to saved version:e {filename} - Edit file in selected folder (or Documents, if no folder selected):{number} - Go to line number (e.g., :42)Escape - Exit to normal mode (from any mode)i - Enter insert mode at cursora - Enter insert mode after cursorA - Enter insert mode at end of lineI - Enter insert mode at first non-whitespace charactero - Insert new line below and enter insert modeO - Insert new line above and enter insert modes - Substitute character (delete and enter insert mode)S - Substitute line (delete line content and enter insert mode)C - Change to end of line (delete to end and enter insert mode)v - Enter visual modeV - Enter visual line mode: or ; - Enter command modeh - Move leftj - Move downk - Move upl - Move rightw - Move to next word startb - Move to previous word starte - Move to end of current word0 - Move to beginning of line^ - Move to first non-whitespace character$ - Move to end of lineControl-U - Scroll half page upControl-D - Scroll half page downgg - Go to first lineG - Go to last line (not implemented yet)f{char} - Find character forward on lineF{char} - Find character backward on linet{char} - Move to before character forward on lineT{char} - Move to after character backward on line/ - Start forward searchn - Repeat last search forwardN - Repeat last search backwardx - Delete character under cursordw - Delete worddd - Delete current lineD - Delete to end of lineyy or Y - Yank (copy) current linep - Put (paste) after cursorP - Put (paste) before cursor~ - Toggle case of character under cursorr{char} - Replace character under cursor with {char}J - Join current line with next lineu - Undo last changeControl-R - Redo last undone changeh, j, k, l - Extend selection0 - Extend selection to beginning of lined or x - Delete selected texty - Yank (copy) selected textj, k - Extend line selectiond or x - Delete selected linesy - Yank (copy) selected linesgq - Wrap selected text at 80 columnsgq - Wrap current paragraph at 80 columns (works in normal and visual line modes)