Provides Vim modal control for Inkdrop, blending the best of Vim and Inkdrop.
- All common motions and operators, including text objects
- Operator motion orthogonality
- Visual mode - characterwise, linewise, blockwise
- Incremental highlighted search (
/,?,#,*,g#,g*) - Search/replace with confirm (:substitute, :%s)
- Search history
- Sort (
:sort) - Marks (
,) - Cross-buffer yank/paste
- Select next/prev item in note list bar (
j/k) - Scroll markdown preview pane
ipm install vimYou can customize keybindings in your init.js. For example,
function configureKeyBindings() {
const Vim = inkdrop.packages.getLoadedPackage('vim').mainModule.Vim
// Map keys
Vim.map('jj', '<Esc>', 'insert') // in insert mode
Vim.map('Y', 'y$') // in normal mode
// Unmap keys
Vim.unmap('jj', 'insert')
}
const editor = inkdrop.getActiveEditor()
if (editor) configureKeyBindings()
inkdrop.onEditorLoad(() => {
configureKeyBindings()
})By default, vim yank/delete operations sync with the system clipboard (like clipboard=unnamed in vim). You can disable this in Preferences > Plugins > vim so that vim operations use an internal register only, matching standard vim behavior. Cmd+C / Cmd+V (or Ctrl+C / Ctrl+V) will still use the system clipboard as usual.
Saves current note immediately to the disk.
Opens next note on the note list.
Opens previous note on the note list.
Toggles HMTL preview.
Toggles side-by-side mode.
You can extend Ex commands by writing init.js.
The following example defines :find command:
inkdrop.onEditorLoad(() => {
const Vim = inkdrop.packages.getLoadedPackage('vim').mainModule.Vim
Vim.defineEx('find', 'f', (cm, event) => {
inkdrop.commands.dispatch(document.body, 'core:find-global')
if (event.argString)
inkdrop.commands.dispatch(document.body, 'core:search-notes', {
keyword: event.argString.trim()
})
})
})See the GitHub releases for an overview of what changed in each update.