|
|
7 years ago | |
|---|---|---|
| .. | ||
| img | 7 years ago | |
| README.org | 7 years ago | |
| config.el | 7 years ago | |
| packages.el | 7 years ago | |
Evil-snipe layer

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.
To use this configuration layer, add it to your ~/.spacemacs. You will need to
add evil-snipe to the existing dotspacemacs-configuration-layers list in this
file.
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)))
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.
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)
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-aliases you can search for a regex very simply:
Here we set the [ character to mean all characters [({ in all modes so a
search with sa[ would find a[, a{ or a(.
;; Alias [ and ] to all types of brackets
(push '(?\[ "[[{(]") evil-snipe-aliases)
(push '(?\] "[]})]") evil-snipe-aliases)
Here we set the char : to mean a regex matching python function
definitions (but only in python-mode), so by searching with f:fff you can
quickly cycle through all function definitions in a buffer!
;; For python style functions
(add-hook 'python-mode-hook
(lambda ()
(make-variable-buffer-local 'evil-snipe-aliases)
(push '(?: "def .+:") evil-snipe-aliases)))