vim-action
Vim-style modal text editing in any macOS text field — Normal and Visual mode wherever you type
File Explorer
- evals.json
- _template.md
- app-shell.md
- auto-strategy-probe.md
- ax-adapter.md
- focus-and-dispatch-reads.md
- keyboard-adapter.md
- mode-engine.md
- mode-indicator-overlay.md
- profiles-and-config.md
- reentrancy-and-safety.md
- strategy-dispatch.md
- system-overview.md
- SKILL.md
- evals.json
- 20260712_active-tap-ax-only-onboarding.md
- 20260712_append-dedicated-motion-cases.md
- 20260712_ax-keyboard-strategy-dispatch.md
- 20260712_disable-sandbox-developer-id.md
- 20260712_github-actions-ci.md
- 20260712_key-representation-and-fixture-format.md
- 20260712_pending-invalid-sequence-noop.md
- 20260712_plans-skill-for-short-term-memory.md
- 20260712_pure-swift-mode-engine.md
- 20260712_single-core-spm-package.md
- 20260712_single-event-tap-pipeline.md
- 20260712_swift-testing-for-engine-tests.md
- 20260712_synthetic-event-marker-and-failsafe.md
- 20260712_unmapped-modifier-passthrough.md
- 20260712_yaml-three-layer-config.md
- 20260713_tap-reenable-watchdog-polling.md
- 20260714_multikey-command-grammar-builder.md
- 20260714_normal-mode-escape-modifiers.md
- 20260716_cgevent-key-translation-ascii-layout.md
- 20260716_keytranslator-total-function-keydown-guard.md
- 20260717_cancellation-first-ordering-premise.md
- 20260717_keytranslator-layout-caching.md
- 20260717_vimaction-edit-output-shape.md
- 20260718_interception-toggle-semantics.md
- 20260719_change-insert-transition-and-cw-deferral.md
- 20260719_linewise-textrange-absolute-count-invalid.md
- 20260719_opmotion-unified-dispatch-table.md
- 20260719_secure-input-status.md
- 20260719_textobject-quote-pair-expansion.md
- 20260719_watchdog-stall-gate-post-stall-recovery.md
- 20260722_visual-entry-pending-interaction.md
- 20260722_visual-mode-output-contract.md
- 20260723_openline-output-contract.md
- 20260723_paste-output-contract.md
- 20260723_undo-output-contract.md
- 20260723_visual-begin-reset-switch-wise-split.md
- 20260723_visual-count-operator-executes.md
- 20260723_visual-yank-clear-selection.md
- 20260724_ctrl-bracket-escape-normalization.md
- 20260724_ctrl-combo-mapped-exception-cancellation.md
- 20260724_scroll-redo-output-contract.md
- 20260725_callback-light-invariant.md
- 20260725_failure-burst-autodisable-shape.md
- 20260725_keyboard-first-mvp-build-order.md
- 20260725_marker-guard-highest-precedence.md
- 20260725_tap-main-runloop-retention.md
- 20260726_action-executor-nonisolated-sendable.md
- 20260726_count-burst-abort-latch-promotion.md
- 20260726_execution-failure-report-granularity.md
- 20260726_kill-combo-swallow-independent-of-fire.md
- 20260726_kill-switch-dedicated-runloop-thread.md
- 20260726_kill-switch-hid-tap-session-fallback.md
- 20260726_kill-switch-off-persistence-off-main.md
- 20260726_kill-switch-trigger-semantics.md
- 20260726_kill-tap-enable-verification.md
- 20260726_m2-app-gate-pre-engine-passthrough.md
- 20260726_m2-execution-wiring-shape.md
- 20260726_motion-keystroke-mapping-contract.md
- 20260726_secure-input-suppresses-delivery-not-enablement.md
- 20260726_shift-leak-event-flags-sufficient.md
- 20260726_tab-indent-first-nonblank-chromium-edge.md
- 20260726_undo-unit-cmdz-policy.md
- 20260726_unsupported-action-not-failure.md
- 20260726_word-forward-first-nonblank-multi-stroke.md
- 20260727_edit-keystroke-mapping-contract.md
- 20260727_inner-word-anchor-via-word-end.md
- 20260727_linewise-newline-rounding.md
- 20260727_notion-cmd-shift-vertical-conflict.md
- 20260727_operator-key-ansi-layout-assumption.md
- 20260727_yank-collapse-to-range-start.md
- 20260728_edit-boundary-saturation-accepted-edges.md
- 20260728_linewise-visual-line-wrap-accepted-edge.md
- 20260728_visual-charwise-backward-origin-shift.md
- 20260728_visual-charwise-entry-inclusive-selection.md
- 20260728_visual-clear-selection-collapse-left.md
- 20260728_visual-extend-stateless-no-linewise-rounding.md
- 20260728_visual-switch-wise-focus-end-rounding.md
- 20260730_chunked-posting-with-pacing.md
- 20260730_cmd-z-ansi-layout-escalation.md
- 20260730_command-key-mapper-scope.md
- 20260730_execution-abort-generation-latch.md
- 20260730_native-command-non-text-ui-hazard.md
- 20260730_openline-return-sequence.md
- 20260730_paste-wise-from-our-own-edit.md
- 20260730_paste-wise-trailing-newline-heuristic.md
- 20260730_scroll-arrow-repetition.md
- 20260731_count-clamp-lowered-to-1000.md
- 20260801_app-enable-config-yaml-only.md
- 20260801_cache-only-callback-confirmed-sufficient.md
- 20260801_config-root-dot-config.md
- 20260801_config-yaml-schema-v1.md
- 20260801_decision-log-pruning-policy.md
- 20260801_element-family-classification-table.md
- 20260801_focused-role-cache-shape.md
- 20260801_kill-combo-autorepeat-fires.md
- 20260801_line-end-shorthand-d-c.md
- 20260801_non-qwerty-command-key-layout-guard.md
- 20260801_non-text-filter-keeps-motion-and-scroll.md
- 20260801_normal-esc-passthrough-when-empty.md
- 20260801_profile-motion-override-unit.md
- 20260801_profile-schema-v1-fields.md
- 20260801_release-block-gate-lifted.md
- 20260801_resolver-fallback-defaults-to-text-area.md
- 20260801_scroll-count-clamp-33.md
- 20260801_settings-ui-read-only-yaml.md
- 20260801_textfield-edit-sequences-scrapped.md
- 20260801_unresolved-window-after-app-switch.md
- 20260801_userdefaults-yaml-ownership.md
- 20260802_action-own-key-override.md
- 20260802_app-icon-icon-composer.md
- 20260802_append-motions-follow-base-override.md
- 20260802_ax-read-timeout-50ms-supersedes-3ms.md
- 20260802_bundled-default-profiles-slack-notion.md
- 20260802_bundled-defaults-seeded-not-merged.md
- 20260802_config-error-visibility-and-apply-semantics.md
- 20260802_config-keyword-notation-lowercase.md
- 20260802_config-layer-vimactionconfig-target.md
- 20260802_config-reload-manual-menubar-trigger.md
- 20260802_dispatch-read-on-posting-queue.md
- 20260802_dock-icon-while-settings-open.md
- 20260802_empty-selection-edit-suppression.md
- 20260802_focused-text-read-api-shape.md
- 20260802_frontmost-gate-non-self-cache-observable.md
- 20260802_menubar-frontmost-app-conveniences.md
- 20260802_package-resolved-committed.md
- 20260802_profile-disable-via-mapping-keyword.md
- 20260802_profile-override-propagation-full-lookup.md
- 20260802_read-consumption-via-mapper-predicates.md
- 20260802_scroll-override-bounds.md
- 20260803_boundary-saturation-refinement-table.md
- 20260803_constant-stroke-word-refinement.md
- 20260803_edit-keystrokes-takes-focused-text.md
- 20260803_line-end-charwise-vim-cursor-model.md
- 20260803_line-end-cursor-model-for-word-objects.md
- 20260803_refinement-branches-not-stroke-counts.md
- 20260803_soft-wrap-linewise-not-resolved-by-window-read.md
- 20260803_word-run-local-predicates-no-offsets.md
- 20260804_visual-anchor-read-self-validation.md
- 20260804_visual-anchor-state-collaborator.md
- 20260804_visual-backward-keyboard-reanchor.md
- 20260804_visual-linewise-motion-range-noop.md
- 20260804_visual-switch-charwise-conditional.md
- 20260805_reanchor-prefix-collapse-shortcut.md
- 20260805_visual-refined-group-stroke-pacing.md
- 20260806_charwise-paste-line-end-no-prefix.md
- 20260806_non-qwerty-command-key-reverse-lookup.md
- 20260806_paste-groups-stroke-pacing.md
- 20260806_paste-wise-memory-covers-all-edits.md
- 20260806_scroll-line-count-priority-ladder.md
- 20260806_scroll-viewport-clamp-no-pacing.md
- 20260806_selection-wise-from-confirmed-stream.md
- 20260806_slack-scroll-arrow-composer-escape-accepted.md
- 20260806_viewport-lines-via-line-for-index.md
- 20260806_viewport-snapshot-per-execute.md
- 20260807_decision-audit-keep-criteria.md
- 20260808_ax-collapse-posted-arrow-not-caret-write.md
- 20260808_ax-delegation-table-single-driver.md
- 20260808_ax-edit-select-then-operator-delegate.md
- 20260808_ax-illegal-argument-observation-log-level.md
- 20260808_ax-motion-caret-model-vim-word-definition.md
- 20260808_ax-offset-layer-window-logical-lines.md
- 20260808_ax-pre-write-failure-ends-execute.md
- 20260808_ax-readback-verify-convergence-poll.md
- 20260808_ax-unproven-edit-delegation-reuses-ax-window.md
- 20260808_ax-visual-overridden-motion-honest-skip.md
- 20260808_ax-visual-session-path-pinning.md
- 20260808_ax-write-failure-whitelist-no-fallback.md
- 20260808_ax-writer-per-primitive-channel.md
- 20260808_hybrid-prefix-atomic-with-first-group.md
- 20260808_hybrid-prefix-failure-axes-clarified.md
- 20260808_last-line-linewise-paste-degrades-to-P.md
- 20260808_last-line-linewise-paste-return-synthesis.md
- 20260808_profile-motion-override-outranks-ax.md
- 20260808_strategy-field-minimal-parsing-d1.md
- 20260809_ax-span-vim-exact-where-table-is-silent.md
- 20260809_config-yaml-line-edit-writes.md
- 20260809_hybrid-insertion-readback-verify-kept.md
- 20260809_hybrid-mapping-multi-group-paced.md
- 20260809_newline-synthesis-gates.md
- 20260809_no-leading-newline-absorb-clipboard-is-the-register.md
- 20260809_paste-resolve-is-pure-lookup.md
- 20260809_permission-discoverability-push.md
- 20260809_settings-window-three-tabs.md
- 20260810_appcast-hosting-github-releases.md
- 20260810_ax-visual-desired-column-tracked.md
- 20260810_ax-visual-session-path-outlives-state-discard.md
- 20260810_ax-visual-switch-both-directions-exact.md
- 20260810_dmg-packaging.md
- 20260810_homebrew-personal-tap.md
- 20260810_notion-unfit-for-ax-visual-session-5-withdrawn.md
- 20260810_sparkle-auto-update.md
- 20260810_tag-push-release-pipeline.md
- 20260810_visual-inclusive-end-bites-terminator.md
- 20260811_release-version-semver-cfbundleversion.md
- 20260811_sparkle-nested-resign-in-pipeline.md
- 20260811_sparkle-updater-ui-and-consent.md
- 20260812_ci-signing-job-tools-digest-pinned.md
- 20260812_deployment-target-macos-14.md
- 20260812_dock-icon-close-signal-window-identity.md
- 20260812_dock-icon-settings-window-handoff.md
- 20260812_hardened-runtime-pinned-in-pbxproj.md
- 20260812_launch-at-login-smappservice-status-ssot.md
- 20260812_readme-demo-media-native-render-pipeline.md
- 20260813_auto-parsing-in-d2.md
- 20260813_auto-probe-async-cached-verdict-pid-lifetime.md
- 20260813_auto-trusted-runtime-demotion-and-observability.md
- 20260813_ax-lie-detection-read-attestation-settable.md
- 20260813_ax-trust-deny-list-code-constant.md
- 20260813_bundled-default-strategy-auto-flip-gated.md
- 20260813_electron-tree-wake-on-probe-failure.md
- 20260813_external-contribution-policy.md
- 20260813_force-text-keyboard-family-substitution.md
- 20260813_illegalargument-cannotcomplete-observation-kept.md
- 20260813_issue-taxonomy-vim-app-split.md
- 20260813_main-branch-protection-required-checks.md
- 20260813_normal-mode-modifier-swallow-not-added.md
- 20260813_visual-selection-edit-pre-delegation-guard.md
- 20260814_menu-verdict-pid-from-gate-non-self-pair.md
- 20260814_menubar-disabled-app-indicator.md
- 20260814_observation-notice-promotion-and-probe-completion-log.md
- 20260814_probe-wake-on-cold-form-and-backoff.md
- 20260814_visual-guard-mismatch-log-info.md
- 20260818_browser-class-auto-untrusted.md
- 20260818_hidden-input-geometry-signal.md
- 20260830_line-end-shorthand-y.md
- 20260831_edit-group-stroke-pacing.md
- 20260901_substitute-shorthand-s-S.md
- 20260902_visual-substitute-charwise-composed.md
- 20260906_mode-indicator-anchor-ladder-event-driven.md
- 20260906_mode-indicator-hybrid-display-policy.md
- 20260906_mode-indicator-settings-in-userdefaults.md
- 20260906_no-forced-chromium-screen-reader-mode.md
- _template.md
- SKILL.md
- 20260802_m5-ax-adapter.md
- 20260818_normal-mode-exit-key-allowlist.md
- 20260906_onscreen-mode-indicator.md
- _template.md
- SKILL.md
- 1-vim-bug.yml
- 2-app-bug.yml
- 3-vim-feature.yml
- 4-app-feature.yml
- ci.yml
- release.yml
- dependabot.yml
- demo.gif
- how-it-works.gif
- icon.png
- menubar-app-disabled.png
- menubar-inactive.png
- menubar-insert.png
- menubar-menu.png
- menubar-normal.png
- menubar-paused.png
- menubar-secure-input.png
- menubar-visual-line.png
- menubar-visual.png
- settings-permission.png
- CONFIGURATION.md
- KEYBINDINGS.md
- AppEnableEditor.swift
- AppProfile.swift
- AppProfileParser.swift
- ConfigDiagnostics.swift
- ConfigKeyStroke.swift
- ConfigLoader.swift
- ConfigSeeder.swift
- GlobalConfig.swift
- GlobalConfigParser.swift
- MotionVocabulary.swift
- NodeInspection.swift
- Configuration.swift
- EngineOutput.swift
- Key.swift
- Mode.swift
- VimAction.swift
- VimEngine.swift
- AppEnableEditorTests.swift
- AppProfileParserTests.swift
- ConfigInvariantTests.swift
- ConfigKeyStrokeTests.swift
- ConfigLoaderTests.swift
- ConfigSeederTests.swift
- FixtureSupport.swift
- GlobalConfigParserTests.swift
- MotionVocabularyTests.swift
- ScaffoldingTests.swift
- CancellationFixtures.swift
- CountFixtures.swift
- CtrlComboFixtures.swift
- EditFixtures.swift
- EngineInvariantTests.swift
- EscapeModifierFixtures.swift
- FixtureSupport.swift
- LinewiseFixtures.swift
- ModeTransitionTests.swift
- MotionFixtures.swift
- OpenPasteUndoFixtures.swift
- OperatorFixtures.swift
- TextObjectFixtures.swift
- VisualFixtures.swift
- Package.resolved
- Package.swift
- vimaction-glyph-outlined-1024.svg
- icon.json
- Contents.json
- Contents.json
- com.tinyspeck.slackmacgap.yaml
- config.yaml
- notion.id.yaml
- AccessibilityPermissionMonitor.swift
- ActionExecutor.swift
- AppState.swift
- AXElementSnapshot.swift
- AXRead.swift
- AXTrustProber.swift
- AXTrustVerdict.swift
- AXWriteEffects.swift
- AXWriteOutcome.swift
- AXWriter.swift
- BundledConfig.swift
- Clipboard.swift
- CommandKeyMapper.swift
- ConfigFileSystem.swift
- ConfigPaths.swift
- ConfigStore.swift
- DispatchContext.swift
- DockIconController.swift
- EditKeyMapper.swift
- EventTapController.swift
- ExecutionAbortLatch.swift
- FailureBurstCounter.swift
- FocusedElementResolver.swift
- FocusedTextAnalysis.swift
- FocusedTextOffsets.swift
- FocusedTextReader.swift
- FrontmostAppGate.swift
- Info.plist
- KeyboardAdapter.swift
- KeyTranslator.swift
- KillSwitchTap.swift
- LaunchAtLoginController.swift
- Logging.swift
- MenuBarIndicator.swift
- ModeIndicatorController.swift
- ModeIndicatorGeometryReader.swift
- ModeIndicatorLayout.swift
- ModeIndicatorPanel.swift
- MotionKeyMapper.swift
- Preferences.swift
- ProfileScaffold.swift
- ResolvedProfile.swift
- SettingsView.swift
- TapPortBox.swift
- TestEnvironment.swift
- UpdaterViews.swift
- ViewportReader.swift
- VimActionApp.swift
- VisualAnchor.swift
- VisualKeyMapper.swift
- Package.resolved
- contents.xcworkspacedata
- VimAction.xcscheme
- project.pbxproj
- AXTrustProberTests.swift
- AXTrustVerdictTests.swift
- AXWriteEffectsTests.swift
- AXWriteOutcomeTests.swift
- AXWriterTests.swift
- CommandKeyMapperTests.swift
- ConfigStoreTests.swift
- DockIconControllerTests.swift
- EditKeyMapperTests.swift
- EventTapDecisionTests.swift
- ExecutionAbortLatchTests.swift
- ExecutionWiringTests.swift
- FailureBurstCounterTests.swift
- FocusedElementResolverTests.swift
- FocusedTextAnalysisTests.swift
- FocusedTextOffsetsTests.swift
- FocusedTextReaderTests.swift
- FrontmostAppGateTests.swift
- KeyboardAdapterAXWriteTests.swift
- KeyboardAdapterTests.swift
- KeyTranslatorTests.swift
- KillSwitchTests.swift
- LaunchAtLoginControllerTests.swift
- MenuBarIndicatorTests.swift
- ModeIndicatorControllerTests.swift
- ModeIndicatorLayoutTests.swift
- MotionKeyMapperTests.swift
- OnboardingPresentationTests.swift
- ProfileOverrideMappingTests.swift
- QwertyLayoutCondition.swift
- ResolvedProfileTests.swift
- SafetyToggleTests.swift
- SyntheticEventMarkerTests.swift
- SyntheticKeyEvent.swift
- TapWatchdogTests.swift
- TemporaryDefaults.swift
- ViewportReaderTests.swift
- VimActionTests.swift
- VisualAnchorTests.swift
- VisualKeyMapperTests.swift
- VimActionUITests.swift
- VimActionUITestsLaunchTests.swift
- .gitignore
- CLAUDE.md
- CONTRIBUTING.md
- LICENSE
- README.md
# Use via CDN
jsDelivrjsDelivr serves any public GitHub repository as a CDN with zero setup. Pick a version and a file to get a ready-to-paste link and snippet.
Link
Example
// repository documentation
Was this content helpful?
(0 ratings)
