Awesome
sneak.vim đź‘ź
Jump to any location specified by two characters.
Sneak is a powerful, reliable, yet minimal motion plugin for Vim. It works with multiple
lines, operators (including repeat .
and surround), motion-repeat
(;
and ,
), keymaps, visual mode, multibyte text, and
macros.
Try label-mode for a minimalist alternative to EasyMotion:
let g:sneak#label = 1
Usage
<a href="http://imgur.com/Jke0mIJ" title="Click to see a short demo"><img src="https://raw.github.com/justinmk/vim-sneak/fluff/assets/readme_diagram.png"></a>
Sneak is invoked with s
followed by exactly two characters:
s{char}{char}
- Type
sab
to move the cursor immediately to the next instance of the text "ab".- Additional matches, if any, are highlighted until the cursor is moved.
- Type
;
to go to the next match (ors
again, ifs_next
is enabled; see:help sneak
). - Type
3;
to skip to the third match from the current position. - Type
ctrl-o
or``
to go back to the starting point.- This is a built-in Vim motion; Sneak adds to Vim's jumplist
only on
s
invocation—not repeats—so you can abandon a trail of;
or,
by a singlectrl-o
or``
.
- This is a built-in Vim motion; Sneak adds to Vim's jumplist
only on
- Type
s<Enter>
at any time to repeat the last Sneak-search. - Type
S
to search backwards.
Sneak can be limited to a vertical scope by prefixing s
with a count.
- Type
5sxy
to go immediately to the next instance of "xy" within 5 columns of the cursor.
Sneak is invoked with operators
via z
(because s
is taken by surround.vim).
- Type
3dzqt
to delete up to the third instance of "qt".- Type
.
to repeat the3dzqt
operation. - Type
2.
to repeat twice. - Type
d;
to delete up to the next match. - Type
4d;
to delete up to the fourth next match.
- Type
- Type
yszxy]
to surround in brackets up toxy
.- Type
.
to repeat the surround operation.
- Type
- Type
gUz\}
to upper-case the text from the cursor until the next instance of the literal text\}
- Type
.
to repeat thegUz\}
operation.
- Type
Install
Requires Vim 7.3+ or Nvim. Label-mode requires Vim 7.4.792+. With Nvim 0.5+ label-mode is driven by virtual text instead of the legacy "conceal" feature.
- vim-plug
Plug 'justinmk/vim-sneak'
- Pathogen
git clone git://github.com/justinmk/vim-sneak.git ~/.vim/bundle/vim-sneak
- Manual installation:
- Copy the files to your
.vim
directory.
- Copy the files to your
To repeat Sneak operations (like dzab
) with dot .
,
repeat.vim is required.
FAQ
Why not use /
?
For the same reason that Vim has motions
like f
and t
: common operations should use the fewest keystrokes.
/ab<cr>
requires 33% more keystrokes thansab
- Sets only the initial position in the Vim jumplist—so you can explore a
trail of matches via
;
, then return to the start with a singlectrl-o
or``
- Doesn't clutter your search history
- Input is always literal (don't need to escape special characters)
- Ignores accents ("equivalence class") when matching (#183)
- Smarter, subtler highlighting
Why not use f
?
- 50x more precise than
f
ort
- Moves vertically
- Highlights matches in the direction of your search
How dare you remap s
?
You can specify any mapping for Sneak (see :help sneak
).
By the way: cl
is equivalent to s
, and cc
is equivalent to S
.
How can I replace f
with Sneak?
map f <Plug>Sneak_s
map F <Plug>Sneak_S
How can I replace f
and/or t
with one-character Sneak?
Sneak has <Plug>
mappings for f
and t
1-character-sneak.
These mappings do not invoke label-mode, even if you have it enabled.
map f <Plug>Sneak_f
map F <Plug>Sneak_F
map t <Plug>Sneak_t
map T <Plug>Sneak_T
Related
- Seek
- EasyMotion
- smalls
- improvedft
- clever-f
- vim-extended-ft
- Fanf,ingTastic;
- IdeaVim-Sneak
- leap.nvim
- flash.nvim
License
Copyright © Justin M. Keyes. Distributed under the MIT license.