GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - justinmk/vim-sneak: The missing motion for Vim :athletic_shoe:

BranchesTags
Open more actions menu

Latest commit

 

History

379 Commits
379 Commits

Folders and files

NameName
Last commit message
Last commit date
autoload
autoload
 
 
doc
doc
 
 
lua
lua
 
 
plugin
plugin
 
 
tests
tests
 
 
LICENSE
LICENSE
 
 
Makefile
Makefile
 
 
README.md
README.md
 
 

Repository files navigation

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

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 (or s again, if s_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 single ctrl-o or ``.
  • 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 the 3dzqt 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 yszxy] to surround in brackets up to xy.
    • Type . to repeat the surround operation.
  • Type gUz\} to upper-case the text from the cursor until the next instance of the literal text \}
    • Type . to repeat the gUz\} operation.

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.

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 than sab
  • 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 single ctrl-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 or t
  • 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.

About

The missing motion for Vim 👟

www.vim.org/scripts/script.php?script_id=4809

Topics

motionnavigationneovimneovim-pluginnvimpluginvimvim-pluginviml

Resources

Readme
MIT license
Activity

Stars

3.5k stars

Watchers

20 watching

Forks

90 forks
Report repository

Releases

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.