• Stars
    star
    1,404
  • Rank 33,499 (Top 0.7 %)
  • Language
    CoffeeScript
  • License
    MIT License
  • Created about 9 years ago
  • Updated about 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

vim-mode improved

vim-mode-plus Build Status BountySource

vim-mode improved.

Installation

Install using Atoms package installer

apm install vim-mode-plus

Some Features

These features are very powerful, especially for the power user. Read the following documents to learn how to use them.

Important

You must disable vim-mode to use vim-mode-plus

  • You don't need the following packages since they're built-in to vim-mode-plus:
  • Scope for CSS selector and keymap is different from vim-mode, not compatible.
  • 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.

From v1.9.0 CoffeeScript based vim-mode-plus extension is no longer supported

  • Now all operations are defined as ES6 class which is NOT extend-able by CoffeeScript.
    • If you have vmp custom operations in your init.coffee, those are no longer working.
    • See CHANGELOG and Wiki for detail.

Thanks

My work is greatly owing to former achievements of the original vim-mode developers and many of its contributors.
As you can see in the commit history, this project was 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 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 the original vim-mode.

Issue report

Whats this?

Fork of vim-mode. Started on 2015.8.1.

  • Many bug fixes.
  • Refactoring: Rewritten almost every line of code.
  • Highlight search
  • visual-blockwise built-in
  • Incremental search by incrementalSearch setting (disabled by default).
  • Cursor visible in all visual-mode (characterwise, blockwise, linewise).
  • Maintain the same cursor position after operations (e.g y, gU) by stayOnYank, stayOnOperate setting. (disabled by default)
  • Lots of new motions like move-up-to-edge, move-down-to-edge. (Mapped to [ and ], Aggressive decision.)
  • 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 (enabled by default. Atom's default is end of change).
  • Allow super granular keymap which is only effective when specific operation is pending like yank-pending, delete-pending. #215
  • And more...

FAQ

Search Q&A label on issues.

Why fork? why not directly contribute to official vim-mode?

  • Changes are too big.
  • I felt many features are too experimental to merge to the official vim-mode.

Behavior different from pure Vim?

Some behaviors are intentionally have different default behaviors. See DifferencesFromPureVim for details.

In visual-block mode, some motions make the editor slow, freeze.

Not freezing, it's just VERY slow.
You can workaround by disabling some keymap. See #214.

ex-mode?

Want to suppress autocomplete-plus's auto suggestion except insert-mode.

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"
  ]

Flash effect does not appear on cursor-line, occurrence-marker is not displayed on cursor-line either.

This is because of the syntax-theme you are using. See this tips on Wiki.

Surround not work

No default keymaps are provided. If you want, install vim-mode-plus-keymaps-for-surround

How can I insert single white space when surround?

Set Characters To Add Space On Surround. from vim-mode-plus's setting.

I want to automatically disable IME when leaving insert-mode.(want set imdisable equivalent in pure-Vim).

Now in-eval phase for this experimental feature.
From vim-mode-plus's settings-view set autoDisableInputMethodWhenLeavingInsertMode to true(default false).

This feature doesn't actually disable IME, its' just set readonly attribute to editor's hidden input element.
It should work for most IME but some Chinese IME still type multibyte character even in readonly input.
For detail, see this discussion.

Wiki

Keymap

vim-mode-plus has many advanced, experimental features but most of them have no default keymap.
If you want to use the full power of vim-mode-plus, see and experiment with each keymap, command in following links.

Helper packages

Below is list of my packages which provide more vim-like experience.
Why I don't build in these features? Because it takes more time and some features are useful for non-vim user.

  • cursor-history provides c-i, c-o to go/back in the cursor position history.
  • open-this provides gf to open file under cursor.
  • clip-history Does not exist in pure Vim, provides clip-board history you can pop yanked text until you get result you want.
  • choose-pane Does not exist in pure Vim, provides keyboard navigation between panes/panels by choosing it by label.
  • keystroke Keystrokes to keystroke keyamp in you keymap.cson.

References

Vim official

Other

Commit emoji convention

  • 📝 Add comment or doc
  • 🎁 New feature.
  • 🐛 Bug fix.
  • 💣 Breaking compatibility.
  • Write test.
  • 🔥 Remove something.
  • 🍺 I'm happy like reduced code complexity.

More Repositories

1

vim-choosewin

Land on window you chose like tmux's 'display-pane'
Vim Script
562
star
2

vim-quickhl

quickly highlight <cword> or visually selected word
Vim Script
229
star
3

vim-textmanip

easy text manupilation for vim
Vim Script
150
star
4

vagrant-snap

snapshoft management plugin for vagrant
Ruby
119
star
5

vim-ruby-xmpfilter

helper for ruby's xmpfilter or seeing_is_believing
Vim Script
115
star
6

atom-narrow

narrow something
JavaScript
110
star
7

vim-chef

jump to related file in chef's cookbook
Vim Script
70
star
8

vim-smalls

spot your cursor with simple search
Vim Script
64
star
9

vim-transform

Transform syntax!!
Vim Script
59
star
10

atom-cursor-history

Cursor position history manager
JavaScript
59
star
11

dotfiles

dotfiles
JavaScript
44
star
12

awesome-tadoku

Tadoku(多読)+α リソースリンク集と一口コメント
Ruby
33
star
13

atom-quick-highlight

Highlight text quickly
JavaScript
33
star
14

atom-vim-mode-plus-ex-mode

Experiment to implement ex-mode for vim-mode-plus
JavaScript
30
star
15

atom-project-folder

Quickly add/remove project folder
JavaScript
26
star
16

vim-ezbar

&statusline configuration helper for minimalist.
Vim Script
25
star
17

atom-lazy-motion

Rapid cursor positioning with fuzzy search.
CoffeeScript
21
star
18

atom-vim-mode-plus-keymaps-for-surround

provides default keymap for surround
21
star
19

atom-open-this

Open file under cursor like `gf`(Vim), `C-x C-f`(Emacs)
CoffeeScript
19
star
20

atom-keystroke

define multi keystroke commands easily
JavaScript
17
star
21

atom-mprettier

Minimalistic prettier runner for more performant Atom startup
JavaScript
16
star
22

atom-vim-mode-visual-block

Add visual-blockwise operation to vim-mode.
CoffeeScript
15
star
23

atom-smalls

Rapid cursor positioning across any visible chars with search and jump.
CoffeeScript
15
star
24

atom-choose-pane

focus pane by label
JavaScript
15
star
25

atom-inline-git-diff

Inline git diffs in editor
JavaScript
14
star
26

vim-surround_custom_mapping

helper utility for tpope's surround.vim , which enables you setup filetype based custom mapping.
Vim Script
13
star
27

vim-unite-ack

narrow the Ack result with unite.vim
Vim Script
12
star
28

atom-markdown-toc-auto

auto insert and update table of contents on save
JavaScript
12
star
29

pxelerator

make PXE installation setup easy
Ruby
10
star
30

cmdline-fu

simple CLI front-end for http://www.commandlinefu.com/
10
star
31

atom-theme-switch

Switch theme quickly
JavaScript
9
star
32

tmux_config

my tmux configration
Ruby
9
star
33

vim-nerdtree_plugin_collections

my personal nerdtree plugin collections
Vim Script
9
star
34

atom-vim-mode-plus-move-selected-text

Move selected text like object
CoffeeScript
8
star
35

cram-vocabulary

JavaScript
7
star
36

js-study

JavaScript self study notes
7
star
37

my-vim-config

my vimrc
Vim Script
7
star
38

build-kikutan

Build kikutan(キクタン) like sound album from text using GoogleTTS
Ruby
6
star
39

atom-paner

Pane manipulation helper
JavaScript
6
star
40

atom-toggle

Toggle keyword
JavaScript
6
star
41

vim-macvim-transparency

change MacVim's window transparency with shortcut
Vim Script
6
star
42

go-study

Golang self study notes — Edit
Go
5
star
43

anki-accelerate-image-drag-and-drop

Accelerate workflow when you drag&drop image to a cards repetitively
Python
5
star
44

vim-fthook

provide very simple filetype hook facility.
Vim Script
5
star
45

atom-isearch

Incremental search for Atom
CoffeeScript
5
star
46

atom-project-find-navigation

Improve project-find-result navigation by dirty hack.
CoffeeScript
5
star
47

atom-clip-history

Paste from clipboard history like emacs' kill-ring
JavaScript
5
star
48

vim-phrase

gather userful phrase for reference
Vim Script
5
star
49

phrase-t9md

phrase of t9md
Ruby
4
star
50

atom-demo-mode

Show command dispatch at hover indicator / also provide service for special integration
JavaScript
4
star
51

vim-textobj-function-ruby

textobj for ruby's method depending on vim-ruby's ]M and [m
Vim Script
4
star
52

vim-learn

CSS
4
star
53

atom-transformer

Transform something
JavaScript
3
star
54

chef-solo-quickstart

Quick start to learn chef's DSL with chef-solo
Ruby
3
star
55

vim-underlinetag

underline Tag to know which word I could jump with C-]
Vim Script
3
star
56

atom-narrow-git-ls

narrow-git-ls
JavaScript
3
star
57

vim-unite-experiment

my local experiment for unite.vim
Vim Script
3
star
58

atom-vim-mode-plus-project-find-from-search

Seamless flow from vmp's search to find-and-replace's project-find
CoffeeScript
3
star
59

iTerminitor

iTerm setup easily
Ruby
2
star
60

vagrant_example

several example of vagrant and chef or puppet
Ruby
2
star
61

vim-snipplr

vim frontend for http://snipplr.com/
2
star
62

vim-resizewin

toggle winsize horizontally vertically or both maximized.
Vim Script
2
star
63

aptsync

apt-mirror like utility. diff: KISS, short code, use rsync.
Ruby
2
star
64

vim-unite-lines

nallowing lines from current buffer
Vim Script
2
star
65

atom-vim-mode-plus-replace-with-execution

TransformString with result of execution
JavaScript
2
star
66

bulk-screen-capture

bulk screen capture script intended to use for Anki
Python
2
star
67

puppet-pi-mode.el

Puppet pi mode for emacs enable you to use pi (puppet type reference cmd-line-tool) from Emacs.
Emacs Lisp
2
star
68

vim-quicktag

automatically generate tags
Vim Script
2
star
69

atom-phrase

Collect phrase, and refer quickly.
CoffeeScript
2
star
70

fu

search www.commandlinefu.com from CLI
Go
2
star
71

t9md

test
2
star
72

vim-tryit

try code in sandbox file.
Vim Script
2
star
73

bdd-infra-train

misc files for bdd-infra
Ruby
2
star
74

ruby_kata

practice for ruby over and over again.
Ruby
1
star
75

atom-mgit

minimum git wrapper just for me
JavaScript
1
star
76

atom-hydrogen-helpers

misc helpers for hydrogen
JavaScript
1
star
77

atom-vocabuilder

Let me vocabuild!
JavaScript
1
star
78

snippy

snippet sharing board based on Flask, teach me python and flask
Python
1
star
79

vim-jslike-oop

VimScript JavaScript Like OOP experiment
Vim Script
1
star
80

puppet-tags.rb

generate tags for puppet's external DSL
1
star
81

atom-focus-pane-or-panel

change focus or pane or panel seamlessly
CoffeeScript
1
star
82

vim-ruby_eval

evaluate text fragment as ruby then insert or print
Ruby
1
star
83

atom-vim-mode-plus-plugin-sample

Sample project for package as vim-mode-plus's plugin
JavaScript
1
star
84

atom-vim-mode-plus-auto-ime

automatically change ime when vim mode changes
JavaScript
1
star
85

ruby-network-programming-learning

teach ruby network programming to myself
Ruby
1
star
86

vim2tmux.vim

send line from buffer to tmux's pane!!
Vim Script
1
star
87

vim-misc-experiment

several experimental before becoming plugin.
Vim Script
1
star
88

atom-try

Paste fragment of code into try buffer then try it!
CoffeeScript
1
star
89

vim-paste-marker

vim plugin , this enables you to first put mark as target then yank to distined target.
Vim Script
1
star
90

vim-mapswap

swap keymap temporarily
Vim Script
1
star
91

atom-google-translate

translate and write to editor in dock or split-pane
JavaScript
1
star