Mini Vimrc

approved

by Felipe M.

Add Vim keybindings via .vimrc

26 stars4,875 downloadsUpdated 2y agoMIT
View on GitHub

Mini Vim Keymaps Obsidian Plugin

In this repo we look to create a minimal plugin for Obsidian that does only one thing and does it well: Set Vim basic mappings to Obsidian Vim mode

Supported Vim settings

  • map
  • imap
  • nmap
  • vmap
  • noremap
  • inoremap
  • nnoremap
  • vnoremap
  • unmap

Getting started

FIRST OF ALL: Remember to Activate the Vim mode in your Vault. Settings -> Editor -> Vim key biddings

Create a .vimrc in the root of your Obsidian vault with the desired commands.

Example of .vimrc

" Use sequential pressing of keys j and k to escape insert mode (really common config for VIM)
inoremap jk <Esc>
inoremap JK <Esc>

" The keys j and k for visual and normal mode go to the visual line instead of the logical one (Really useful for a more organic experience)
noremap j gj
noremap k gk

" Uses H and L To navigate between blank lines in Visual and Normal modes.
noremap H {
noremap L }

" Uses K and J to scroll back and forth in Visual and Normal modes
noremap K <C-b>
noremap J <C-f>

" Uses ; to start commands in Visual and Normal modes
noremap ; :

Settings

Vimrc path

The default path is on the root folder .vimrc. You can change that to a Markdown file or a simple text file. In any case, they will be treated as a .vimrc file, and each line will be read (and comment lines start with " as you can see in the example above).

A markdown file is an option in case you want to access and edit the file in Obsidian itself. ** Important: ** If you will use a Markdown file, make sure to add the file extension .md, not just the name of the file that you see in the Obsidian file explorer.

Another option is to use .obsidian/.vimrc just so that the file is in the same folder as the other Obsidian configurations.

Motivation

Obsidian offers a Vim mode editor, powered by CodeMirror. Keymaps work in such an environment, but by default, it doesn't allow users to automatically set keymaps as it is initialized. That causes the user to have to manually enter all the desired keymaps every time one opens Obsidian.

This is where this plugin gets in the game: With a .vimrc file in the Obsidian vault, we will be able to declare keymaps and set basic options to be automatically initialized every time Obsidian is open.

Why a plugin that does only keymaps and not only all the other Vim configurations?

We want to create a plugin that is minimal and performs only one thing. With that design, the plugin becomes:

  • Easier to understand: So even without a lot of context one can check the plugin code before adding to your Obsidian vault.
  • Maintainable: So that if any API changes Obsidian or its dependencies happen, we can easily update the code and functionality.

If you are looking for a more complete functionality plugin you should check out: obsidian-vimrc-support

Inspiration

For plugin developers

Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.