spacemacs/contrib/evil-snipe
2015-04-04 01:05:08 -04:00
..
img Add evil-snipe layer 2015-02-27 21:40:50 -05:00
config.el Add evil-snipe layer variable evil-snipe-enable-alternate-f-and-t-behaviors 2015-02-27 22:06:52 -05:00
packages.el evil-snipe layer: fix the use-package configuration 2015-04-04 01:05:08 -04:00
README.md Edit evil-snipe README 2015-03-07 00:07:18 -05:00

evil-snipe contribution layer for Spacemacs

logo

Table of Contents

Description

The package evil-snipe

  • enables more efficient searches with f/F/t/T.
  • adds a new, more precise search with s/S

Evil-snipe allows you to search more quickly and precisely in the buffer. It does so by improving on the built in f/F/t/T searches and adding another search command, namely s/S.

evil-snipe changes s/S behavior in order to search forward/backwards in the buffer with two chars.

Install

Layer

To use this contribution add it to your ~/.spacemacs

(setq-default dotspacemacs-configuration-layers '(evil-snipe))

Improved f and t search behavior

With evil-snipe you can define your own search scope for f and t searches which means that you won't have to jump to the correct line before searching with f/t/F/T. And after you have found a match, you can just press f or t again afterwards to continue the search. No need to use ;/,.

This alternate behavior is disabled by default, to enable it set the layer variable evil-snipe-enable-alternate-f-and-t-behaviors to t:

(setq-default dotspacemacs-configuration-layers
  '(evil-snipe :variables evil-snipe-enable-alternate-f-and-t-behaviors t ))

Two-character search with s

With the s/S keys you can do a simple search like f/t, but instead of searching for one character, you search for two. This makes the search a lot more precise than regular f/t searches. While you can search forward or backwards in the buffer with / and ?, s/S are much easier to reach, don't require you to press enter and they are precise enough for many common purposes.

More scopes

Evil-snipe also adds several scope options for searches (set evil-snipe-scope and evil-snipe-repeat-scope to one of these, the default value is buffer):

Value Description
buffer search in the rest of the buffer after the cursor (vim-sneak behavior)
line search in the current line after the cursor (vim-seek behavior)
visible search in the rest of the visible buffer only
whole-line same as line, but highlight matches on either side of cursor
whole-buffer same as buffer, but highlight all matches in buffer
whole-visible same as 'visible, but highlight all visible matches in buffer

If you do not want to replace the regular f/F/t/T behavior, just remove this line from evil-snipe/packages.el: (evil-snipe-replace-evil)

Symbol groups

With symbol groups you can let a character stand for a regex, for example a group of characters. By adding a pair of '(CHAR REGEX) to the list 'evil-snipe-symbol-groups you can search for a regex very simply:

  • Here we set the [ character to mean all characters "[({" so a search with sa[ would find a[, a{ or a(.
;; Alias [ and ] to all types of brackets
(add-to-list 'evil-snipe-symbol-groups '(?\\[ \"[[{(]\"))
  • Here we set the char : to mean a regex matching python function definitions so by searching with f:fff you can quickly cycle through all function definitions in a buffer!
;; For python style functions
(add-to-list 'evil-snipe-symbol-groups '(?\\: \"def .+:\"\))

Key bindings

TODO