A Neovim plugin that supercharges Insert Mode with modern editing behavior.
Image used under fair use, for illustrative and non-commercial purposes. All rights to the character and image belong to their respective owners.
- Normal Mode: Stay true to Vim, maintain your Vim proficiency and benefit from its full power. Use
hjkl
and all of Vim's native keybindings. - Insert Mode: Becomes fluid, intuitive, and modern (like Sublime Text, Notepad++, or other contemporary editors). Use
← ↓ ↑ →
,Ctrl
for jumps,Shift
for selections, plus motion helpers likeHome
,End
,PageUp
,PageDown
.
The idea isn't to replace Normal Mode, but to elevate Insert Mode — making it ideal for lightweight, quick and (perhaps not-so) dirty edits without ever leaving it.
- Normal Mode is where Vim shines — efficient, modal, powerful. Overloading it with arrow keys or modern behavior is a waste of potential. Insert Mode, in contrast, is underpowered — users are often forced to exit it just to perform basic actions.
- For most non-vim users, selecting with
Shift
+ motion is second nature. also the behavior of Select mode feel natural. Combined with the natural feel of Select Mode, this plugin offers a gentle bridge into Vim, making it more accessible to newcomers. - Friendly even for non-coding workflows — ideal for quick edits, note-taking and general text manipulation.
- All this, without compromising Vim's philosophy.
Outside Insert Mode, everything behaves as expected.
Inside Insert Mode, you get enhanced with modern editing capabilities:
- Text selection using
Shift
+Arrow Keys
. - When a selection is active, typing replaces the selection — without modifying Vim registers.
- Fast cursor movement with
Ctrl
+←
and→
(similar to Vim'sb
ande
but enhanced) Note: it relies on what set invim.opt.iskeyword
. - Jump between paragraphs with
Ctrl
+↓
and↑
(same as vim's{
and}
). - Word-wise selection with
Ctrl
+Shift
+Arrow Keys
. - Full support for
Home
,End
,Page Up
, andPage Down
.Ctrl
+Home
jumps to the beginning of the file,Ctrl
+End
to the end. - Copy/Cut/Paste op.:
Ctrl
+C
,Ctrl
+V
, andCtrl
+X
for copy, paste, and cut — fully compatible with the system clipboard. (*) - Wrapping utilities: after selecting text, press e.g.
)
to wrap it in parentheses — selection remains active, allowing for rapid combined operations, i.e.)
and then"
does('ciao')
. - Search navigation with
F3
andF2
(orShift-F3
). PressF4
to exit highlight mode (if enabled). Ctrl + F
opens the search prompt. If text is selected, it is used as the search query. (*)- Undo/Redo with
Ctrl + Z
andCtrl + Y
. Note: it's reccomanded to set undo breakpoints in insert mode for a better experience. (*) - Move lines up/down with
Alt + ↑ / ↓
. Works on single or multiple selected lines. - While selecting one or more lines, use
Tab
andShift
+Tab
to indent or dedent. Ctrl
+a
for select all. (*)Ctrl
+l
for convert Select to S-Line. (*)Insert
key allows to quickly switch between Select and Visual mode.
(*) Note: Ctrl
can be replaced with Meta (alt)
with operations_key
setting.
Using lazy.nvim:
{
"colomb8/rambo.nvim",
config = function()
require("rambo").setup({
-- operations_key = 'C', -- 'C' or 'M'
})
end,
},
setup() is optional — call it only if you want to override defaults.
Configuration:
C
forCtrl
orM
forMeta (Alt)
; it sets the key for Copy/Cut/Paste, Undo/Redo, Search, Select All and convert Select to S-Line; default isC
.
:help
Vim documentation – provide Vim help file (:help rambo) for discoverability- Plugin custom configuration – allow users to customize some key mappings and behavior via
setup({ ... })
- Unicode support – extend compatibility beyond ASCII for smooth editing also in international contexts.
- Simple multicursor support – implement basic but handy multicursor editing.