Search...Search plugins and themes...
⌘K
Sign in
  • Get started
  • Download
  • Pricing
  • Enterprise
  • Account
  • Obsidian
  • Overview
  • Sync
  • Publish
  • Canvas
  • Mobile
  • Web Clipper
  • CLI
  • Learn
  • Help
  • Developers
  • Changelog
  • About
  • Roadmap
  • Blog
  • Resources
  • System status
  • License overview
  • Terms of service
  • Privacy policy
  • Security
  • Community
  • Plugins
  • Themes
  • Discord
  • Forum / 中文论坛
  • Merch store
  • Brand guidelines
Follow us
DiscordTwitterBlueskyThreadsMastodonYouTubeGitHub
© 2026 Obsidian

Vim Mode Per Device

hugohhugoh62 downloads

Turn vim key bindings on or off depending on whether you are on desktop or mobile.

Add to Obsidian
  • Overview
  • Scorecard
  • Updates1

An Obsidian plugin that turns Vim key bindings on or off depending on the kind of device Obsidian is running on.

Vim key bindings are great with a hardware keyboard and painful on a phone's touch keyboard. Obsidian stores the setting in the vault's shared config (.obsidian/app.json), so with iCloud, Obsidian Sync, Git or any other sync, switching it on for your laptop switches it on for your phone too. This plugin sets it per device type each time Obsidian starts.

Features

  • Vim key bindings on for desktop, off for mobile by default.
  • Both choices are configurable, so you can do the opposite or turn it on everywhere.
  • Writes the setting only when it differs, so synced devices don't keep rewriting app.json.
  • No network access, no telemetry, and no files touched besides Obsidian's own config.

Installation

From Community plugins

  1. Open Settings → Community plugins → Browse.
  2. Search for Vim Mode Per Device and select Install, then Enable.

Manually

  1. Download main.js and manifest.json from the latest release.
  2. Copy them to <vault>/.obsidian/plugins/vim-mode-per-device/.
  3. Reload Obsidian and enable the plugin in Settings → Community plugins.

Enable the plugin once: the list of enabled plugins syncs with the vault, so it becomes active on every device.

Settings

Settings → Vim Mode Per Device:

Setting Default Applies on
Vim key bindings on desktop On macOS, Windows, Linux
Vim key bindings on mobile Off iOS, iPadOS, Android (phones and tablets)

Changes apply immediately to the current device. Other devices pick them up the next time Obsidian starts there.

How it works

On load, the plugin checks Platform.isMobile and sets Obsidian's vimMode config to the matching setting. The plugin's own settings are stored in its data.json and sync with the vault like any other plugin data.

Caveats

  • Toggling Settings → Editor → Vim key bindings by hand still works, but the plugin applies your per-device choice again the next time Obsidian starts. Change the plugin's settings instead.
  • Tablets count as mobile, which is how Obsidian itself classifies them.
  • Obsidian doesn't publish an API for its own editor settings. The plugin uses app.vault.getConfig / setConfig, the internal methods behind Obsidian's settings screens. Many plugins rely on them, but a future Obsidian release could change them.

Contributing

See CONTRIBUTING.md for development setup and the release process.

License

MIT

HealthExcellent
ReviewPassed
About
Set Vim key bindings per device so hardware-keyboard devices default to Vim on and touch devices default to Vim off, with per-device choices configurable. Apply the chosen setting at startup and only update the vault's shared app config when it actually differs to avoid repeated sync writes.
VimAutomation
Details
Current version
1.0.0
Last updated
2 weeks ago
Created
2 weeks ago
Updates
1 release
Downloads
62
Compatible with
Obsidian 1.13.0+
Platforms
Desktop, Mobile
License
MIT
Report bugRequest featureReport plugin
Author
hugohhugoh
GitHubhugoh
  1. Community
  2. Plugins
  3. Vim
  4. Vim Mode Per Device

Related plugins

Templater

Create and use dynamic templates.

Homepage

Open a note, base, or workspace on startup, or set it for quick access later.

Linter

Format and style your notes. Linter can be used to format YAML tags, aliases, arrays, and metadata; footnotes; headings; spacing; math blocks; regular Markdown contents like list, italics, and bold styles; and more with the use of custom rule options.

BRAT

Easily install a beta version of a plugin for testing.

Advanced URI

Control everything with URI.

QuickAdd

Quickly add new notes or content to your vault.

Lazy Loader

Load plugins with a delay on startup, so that you can get your app startup down into the sub-second loading time.

Hot Reload

Automatically reload in-development plugins when their files are changed

Simplified Chinese Word Splitting

Adds Simplified Chinese word splitting support for the editor and Vim mode.

Update modified date

Automatically update a frontmatter modified date field when the file is modified.