{"id":13393757,"url":"https://github.com/t9md/atom-vim-mode-plus","last_synced_at":"2025-04-08T09:05:59.422Z","repository":{"id":46588411,"uuid":"42821704","full_name":"t9md/atom-vim-mode-plus","owner":"t9md","description":"vim-mode improved","archived":false,"fork":false,"pushed_at":"2021-10-07T00:57:54.000Z","size":7485,"stargazers_count":1395,"open_issues_count":126,"forks_count":109,"subscribers_count":24,"default_branch":"master","last_synced_at":"2025-04-01T07:44:42.620Z","etag":null,"topics":["atom","vim-mode","vim-mode-plus"],"latest_commit_sha":null,"homepage":"https://atom.io/packages/vim-mode-plus","language":"CoffeeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/t9md.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-09-20T17:13:43.000Z","updated_at":"2025-03-12T08:10:17.000Z","dependencies_parsed_at":"2022-07-20T04:18:01.915Z","dependency_job_id":null,"html_url":"https://github.com/t9md/atom-vim-mode-plus","commit_stats":null,"previous_names":[],"tags_count":227,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/t9md%2Fatom-vim-mode-plus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/t9md%2Fatom-vim-mode-plus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/t9md%2Fatom-vim-mode-plus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/t9md%2Fatom-vim-mode-plus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/t9md","download_url":"https://codeload.github.com/t9md/atom-vim-mode-plus/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247809963,"owners_count":20999816,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["atom","vim-mode","vim-mode-plus"],"created_at":"2024-07-30T17:00:59.859Z","updated_at":"2025-04-08T09:05:59.399Z","avatar_url":"https://github.com/t9md.png","language":"CoffeeScript","readme":"# vim-mode-plus [![Build Status](https://travis-ci.org/t9md/atom-vim-mode-plus.svg)](https://travis-ci.org/t9md/atom-vim-mode-plus) [![BountySource](https://api.bountysource.com/badge/team?team_id=116280\u0026style=raised)](https://www.bountysource.com/teams/atom-vim-mode-plus)\n\nvim-mode improved.\n\n\u003c!-- TOC START min:1 max:3 link:true asterisk:true update:true --\u003e\n* [vim-mode-plus](#vim-mode-plus)\n* [Installation](#installation)\n* [Some Features](#some-features)\n* [Important](#important)\n    * [You must disable vim-mode to use vim-mode-plus](#you-must-disable-vim-mode-to-use-vim-mode-plus)\n    * [From v1.9.0 CoffeeScript based vim-mode-plus extension is no longer supported](#from-v190-coffeescript-based-vim-mode-plus-extension-is-no-longer-supported)\n* [Thanks](#thanks)\n* [Issue report](#issue-report)\n* [Whats this?](#whats-this)\n* [FAQ](#faq)\n    * [Why fork? why not directly contribute to official vim-mode?](#why-fork-why-not-directly-contribute-to-official-vim-mode)\n    * [Behavior different from pure Vim?](#behavior-different-from-pure-vim)\n    * [In visual-block mode, some motions make the editor slow, freeze.](#in-visual-block-mode-some-motions-make-the-editor-slow-freeze)\n    * [ex-mode?](#ex-mode)\n    * [Want to suppress autocomplete-plus's auto suggestion except insert-mode.](#want-to-suppress-autocomplete-pluss-auto-suggestion-except-insert-mode)\n    * [Flash effect does not appear on cursor-line, occurrence-marker is not displayed on cursor-line either.](#flash-effect-does-not-appear-on-cursor-line-occurrence-marker-is-not-displayed-on-cursor-line-either)\n    * [Surround not work](#surround-not-work)\n    * [How can I insert single white space when surround?](#how-can-i-insert-single-white-space-when-surround)\n    * [I want to automatically disable IME when leaving `insert-mode`.(want `set imdisable` equivalent in pure-Vim).](#i-want-to-automatically-disable-ime-when-leaving-insert-modewant-set-imdisable-equivalent-in-pure-vim)\n* [Wiki](#wiki)\n* [Keymap](#keymap)\n* [Helper packages](#helper-packages)\n* [References](#references)\n  * [Vim official](#vim-official)\n  * [Other](#other)\n* [Commit emoji convention](#commit-emoji-convention)\n\u003c!-- TOC END --\u003e\n\n# Installation\n\nInstall using [Atoms package installer](http://flight-manual.atom.io/using-atom/sections/atom-packages/)\n\n`apm install vim-mode-plus`\n\n# Some Features\n\nThese features are very powerful, especially for the power user. Read the following documents to learn how to use them.  \n\n- [Movie on youtube to show power of occurrence](https://www.youtube.com/watch?v=01yHgi59ASg\u0026t=119s)\n- [Tweet for quick guide for occurrence](https://twitter.com/t9md/status/928155248283197440)\n- [Advanced Topic Tutorial](https://github.com/t9md/atom-vim-mode-plus/wiki/AdvancedTopicTutorial)\n- [Occurrence Modifier](https://github.com/t9md/atom-vim-mode-plus/wiki/OccurrenceModifier)\n- [CHANGELOG.md](https://github.com/t9md/atom-vim-mode-plus/blob/master/CHANGELOG.md)\n\n# Important\n\n### You must disable vim-mode to use vim-mode-plus\n\n- You don't need the following packages since they're built-in to vim-mode-plus:\n  - [vim-surround](https://atom.io/packages/vim-surround): No default keymap. See FAQ section in this doc.\n  - [vim-mode-visual-block](https://atom.io/packages/vim-mode-visual-block)\n- Scope for CSS selector and keymap is different from vim-mode, **not compatible**.\n- Internal code base is very different. Thus, issues and PRs should be directly sent to vim-mode-plus. **DON'T report vim-mode-plus's issues or PRs to the official vim-mode.**\n\n### From v1.9.0 CoffeeScript based vim-mode-plus extension is no longer supported\n\n- Now all operations are defined as ES6 class which is NOT extend-able by CoffeeScript.\n  - If you have vmp custom operations in your `init.coffee`, those are no longer working.\n  - See [CHANGELOG](https://github.com/t9md/atom-vim-mode-plus/blob/master/CHANGELOG.md) and [Wiki](https://github.com/t9md/atom-vim-mode-plus/wiki/ExtendVimModePlusInInitFile) for detail.\n\n# Thanks\n\nMy work is greatly owing to former achievements of the original vim-mode developers and many of its contributors.  \nAs you can see in the commit history, this project was originally started by forking official [vim-mode](https://github.com/atom/vim-mode).  \nThe great design to achieve Vim operation by composing operator with target (motion, text-object) on top of operationStack still lives in vim-mode-plus now.  \nI don't think I can find this idea by myself from nothing.  \nSincerely, I feel I couldn't do anything without the original vim-mode.  \n\n# Issue report\n\n- Read [ISSUE_TEMPLATE](https://github.com/t9md/atom-vim-mode-plus/blob/master/ISSUE_TEMPLATE.md)\n\n# Whats this?\n\nFork of [vim-mode](https://github.com/atom/vim-mode). Started on 2015.8.1.\n\n- Many bug fixes.\n- Refactoring: Rewritten almost every line of code.\n- Highlight search\n- visual-blockwise built-in\n- Incremental search by `incrementalSearch` setting (disabled by default).\n- Cursor visible in all visual-mode (characterwise, blockwise, linewise).\n- Maintain the same cursor position after operations (e.g `y`, `gU`) by `stayOnYank`, `stayOnOperate` setting. (disabled by default)\n- Lots of new motions like `move-up-to-edge`, `move-down-to-edge`. (Mapped to `[` and `]`, Aggressive decision.)\n- Surround built-in. Powerful AnyPair family (`change-surround-any-pair` operator, `inner-any-pair` text-object) to detect pair automatically.\n- Set cursor position to start of change on undo or redo by enabling `setCursorToStartOfChangeOnUndoRedo` (enabled by default. Atom's default is end of change).\n- Allow super granular keymap which is only effective when specific operation is pending like `yank-pending`, `delete-pending`. [#215](https://github.com/t9md/atom-vim-mode-plus/issues/215)\n- And more...\n\n# FAQ\n\nSearch [Q\u0026A](https://github.com/t9md/atom-vim-mode-plus/issues?utf8=%E2%9C%93\u0026q=label%3AQ%26A) label on issues.\n\n### Why fork? why not directly contribute to official vim-mode?\n\n- Changes are [too big](https://github.com/t9md/atom-vim-mode-plus/graphs/contributors).\n- I felt many features are too experimental to merge to the official vim-mode.\n\n### Behavior different from pure Vim?\n\nSome behaviors are intentionally have different default behaviors.\nSee [DifferencesFromPureVim](https://github.com/t9md/atom-vim-mode-plus/wiki/DifferencesFromPureVim) for details.\n\n### In visual-block mode, some motions make the editor slow, freeze.\n\nNot freezing, it's just VERY slow.  \nYou can workaround by disabling some keymap. See [#214](https://github.com/t9md/atom-vim-mode-plus/issues/214).\n\n### ex-mode?\n\n- The [ex-mode](https://atom.io/packages/ex-mode) package has the most complete ex-mode support.\n- Very immature package [vim-mode-plus-ex-mode](https://atom.io/packages/vim-mode-plus-ex-mode) exists.\n- My thought for ex-mode is [here #52](https://github.com/t9md/atom-vim-mode-plus/issues/52).\n\n### Want to suppress autocomplete-plus's auto suggestion except insert-mode.\n\nSet `suppressActivationForEditorClasses` autocomplete-plus's config to following value.\n\n```\nvim-mode-plus.normal-mode, vim-mode-plus.visual-mode, vim-mode-plus.operator-pending-mode, vim-mode-plus.insert-mode.replace\n```\n\nIf you want to directly edit `config.cson`, here it is.\n\n```coffeescript\n\"autocomplete-plus\":\n  suppressActivationForEditorClasses: [\n    \"vim-mode-plus.normal-mode\"\n    \"vim-mode-plus.visual-mode\"\n    \"vim-mode-plus.operator-pending-mode\"\n    \"vim-mode-plus.insert-mode.replace\"\n  ]\n```\n\n### Flash effect does not appear on cursor-line, occurrence-marker is not displayed on cursor-line either.\n\nThis is because of the syntax-theme you are using.\nSee [this tips on Wiki](https://github.com/t9md/atom-vim-mode-plus/wiki/TIPS#flash-effect-not-appear-on-cursor-line-occurrence-marker-is-not-displayed-on-cursor-line-too).\n\n### Surround not work\n\nNo default keymaps are provided.\nIf you want, install [vim-mode-plus-keymaps-for-surround](https://github.com/t9md/atom-vim-mode-plus-keymaps-for-surround)\n\n### How can I insert single white space when surround?\n\nSet `Characters To Add Space On Surround`. from vim-mode-plus's setting.\n\n### I want to automatically disable IME when leaving `insert-mode`.(want `set imdisable` equivalent in pure-Vim).\n\nNow in-eval phase for this experimental feature.  \nFrom vim-mode-plus's settings-view set `autoDisableInputMethodWhenLeavingInsertMode` to `true`(default `false`).\n\nThis feature doesn't actually disable IME, its' just set `readonly` attribute to editor's hidden [input][MDN input] element.  \nIt should work for most IME but some Chinese IME still type multibyte character even in `readonly` input.  \nFor detail, see this [discussion][discussion].  \n\n[MDN input]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input\n[discussion]: https://github.com/frapples/vim-mode-plus-patch-switch-ime/issues/1\n\n# Wiki\n\n- [Home](https://github.com/t9md/atom-vim-mode-plus/wiki/Home)\n\n# Keymap\n\nvim-mode-plus has many advanced, experimental features but most of them have no default keymap.  \nIf you want to use the full power of vim-mode-plus, see and experiment with each keymap, command in following links.  \n\n- [Commands](https://github.com/t9md/atom-vim-mode-plus/wiki/Commands) summary of vmp's commands with keymap.\n- [default keymaps](https://github.com/t9md/atom-vim-mode-plus/blob/master/keymaps/vim-mode-plus.cson)\n- [my dotfiles](https://github.com/t9md/dotfiles)\n\n# Helper packages\n\n- [ListOfVimModePlusPlugins](https://github.com/t9md/atom-vim-mode-plus/wiki/ListOfVimModePlusPlugins)\n\nBelow is list of my packages which provide more vim-like experience.  \nWhy I don't build in these features? Because it takes more time and some features are useful for non-vim user.\n\n- [cursor-history](https://atom.io/packages/cursor-history)\nprovides \u003ckbd\u003ec-i\u003c/kbd\u003e, \u003ckbd\u003ec-o\u003c/kbd\u003e to go/back in the cursor position history.\n- [open-this](https://atom.io/packages/open-this)\nprovides \u003ckbd\u003egf\u003c/kbd\u003e to open file under cursor.\n- [clip-history](https://atom.io/packages/clip-history)\nDoes not exist in pure Vim, provides clip-board history you can pop yanked text until you get result you want.\n- [choose-pane](https://atom.io/packages/choose-pane)\nDoes not exist in pure Vim, provides keyboard navigation between panes/panels by choosing it by label.\n- [keystroke](https://atom.io/packages/keystroke)\nKeystrokes to keystroke keyamp in you `keymap.cson`.\n\n# References\n\n## Vim official\n- [motion](http://vimhelp.appspot.com/motion.txt.html)\n- [operator](http://vimhelp.appspot.com/motion.txt.html#operator)\n- [text-object](http://vimhelp.appspot.com/motion.txt.html#object-select)\n- [change](http://vimhelp.appspot.com/change.txt.html)\n- [marks](http://vimhelp.appspot.com/motion.txt.html#mark-motions)\n- [scroll](http://vimhelp.appspot.com/scroll.txt.html)\n- [search-commands](http://vimhelp.appspot.com/pattern.txt.html#search-commands)\n\n## Other\n- [operator, the true power of Vim](http://whileimautomaton.net/2008/11/vimm3/operator) by kana.  \n  True power of Vim is Operator and TextObject.\n\n- [List of text-object as vim plugin](https://github.com/kana/vim-textobj-user/wiki)  \n  vim-mode-plus builtin textobj for function, fold, entire, comment, indent, line, and any-pair(super set of many pair text-obj)\n\n# Commit emoji convention\n\n- :memo: Add comment or doc\n- :gift: New feature.\n- :bug: Bug fix.\n- :bomb: Breaking compatibility.\n- :white_check_mark: Write test.\n- :fire: Remove something.\n- :beer: I'm happy like reduced code complexity.\n","funding_links":[],"categories":["Code Editors","CoffeeScript","Text Editors"],"sub_categories":["Atom"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ft9md%2Fatom-vim-mode-plus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ft9md%2Fatom-vim-mode-plus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ft9md%2Fatom-vim-mode-plus/lists"}