vim-mode improved.
My work is greatly owing to former achievement done by original vim-mode developers and many of its contributors.
As you can see in commit history, this project is originally started by forking official vim-mode.
The great design to achieve Vim operation by composing operator with target(motion, text-object) on top of operationStack is still lives in vim-mode-plus now.
I don't think I can find this idea by myself from nothing.
Sincerely, I feel I couldn't do anything without original vim-mode.
Fork of vim-mode. Started at 2015.8.1.
- Many bug fixes.
- Refactoring: Rewritten almost every lines of codes.
- Highlight search
- visual-blockwise built-in
- Incremental search by
incrementalSearch
setting(disabled by default). - Cursor visible in all visual-mode(characterwise, blockwise, linewise).
- Stay same cursor position after operate(e.g
y
,gU
) bystayOnYank
,stayOnOperate
setting.(disabled by default) - Lots of new motion like
move-up-to-edge
,move-down-to-edge
.(No keymap by default) - Surround built-in. Powerful AnyPair family(
change-surround-any-pair
operator,inner-any-pair
text-object) to detect pair automatically. - Set cursor position to start of change on undo or redo by enabling
setCursorToStartOfChangeOnUndoRedo
(disabled by default. Atom's default is end of change). - Allow super granular keymap only effective when specific operation is pending like
yank-pending
,delete-pending
. #215 - And more...
- You need to disable vim-mode first. You can't use both simultaneously.
- Following packages for vim-mode doesn't work in vim-mode-plus. Why? Because service API name is different. It's easy to add support I believe. Please report to each project.
- vim-mode-clipboard-plus
- ex-mode
- vim-surround: surround feature included vim-mode-plus, so you won't need this.
- vim-mode-visual-block: (my package) builtin to vim-mode-plus with better integration.
- Scope for CSS selector and keymap is different from vim-mode, not compatible.
- Internal code base is very different. Thus, issue, PRs should be directly sent to vim-mode-plus. DONT report vim-mode-plus's issue or PRs to official vim-mode.
- Changes are too big.
- I felt many features are too experimental to merge to official vim-mode.
Not freezing, its just VERY slow.
You can workaround by disabling some keymap. See #214.
- Very immature package vim-mode-plus-ex-mode is exists.
- My thought for ex-mode is here #52.
Set suppressActivationForEditorClasses
autocomplete-plus's config to following value.
vim-mode-plus.normal-mode, vim-mode-plus.visual-mode, vim-mode-plus.operator-pending-mode, vim-mode-plus.insert-mode.replace
If you want to directly edit config.cson
, here it is.
"autocomplete-plus":
suppressActivationForEditorClasses: [
"vim-mode-plus.normal-mode"
"vim-mode-plus.visual-mode"
"vim-mode-plus.operator-pending-mode"
"vim-mode-plus.insert-mode.replace"
]
- Commands summary of vmp's commands with keymap.
- Operations includes most of commands with keymap information.
- GIFs demonstrates fancy features.
- Keymap example.
- Extend vmp in init file
- Create vmp plugin
- List of vmp plugins
Some of the keymap is not set by default, check following link for reference.
- Commands summary of vmp's commands with keymap.
- keymaps
- Keymap example
- Commands which have no default keymap
Below is list of my packages which provide more vim-like experience.
Why I don't builtin these feature? Because it take more time and some feature is useful for non-vim user.
- cursor-history provides c-i, c-o to go/back cursor position history.
- open-this provides gf to open file under cursor.
- clip-history Not exist in pure Vim, provides clip-board history you can pop yanked text until you get result you want.
-
Vim official
-
Other
-
operator, the true power of Vim by kana.
True power of Vim is Operator and TextOjbect. -
List of text-object as vim plugin
vim-mode-plus builtin textobj for function, fold, entire, comment, indent, line, and any-pair(super set of many pair text-obj)
-
- 📝 Add comment or doc
- 🎁 New feature.
- 🐛 Bug fix
- 💣 Breaking compatibility.
- ✅ Write test.
- 🔥 Remove something.
- 🍺 I'm happy like reduced code complexity.