ace-window full path
03 Mar 2015I just closed a really helpful
issue for
ace-window
. Turns out that there's a plugin for vim called
Easymotion that's very similar to ace-jump-mode
. And that plugin
doesn't highlight the leading chars one by one, but instead gives them
all at once. Which is a pretty good idea, since it's more convenient
to read the whole path at once and type it in at once rather than:
- read one char
- type one char
- read one more char
- type one more char
- ... (maybe more steps)
To turn on the new behavior:
(setq aw-leading-char-style 'path)
Although this will only have an effect once you have more than 10 windows. But this method really improves the functions from avy-jump.el. I've added some more commands and renamed the old ones since yesterday.
avy-jump demos
avi-goto-char-2
Here's how I like to bind avi-goto-char-2
:
(global-set-key (kbd "C-'") 'avi-goto-char-2)
And here's the result of C-' bu:
As you can see, nothing is overwritten by the overlay - it's appended
after the search chars. In the screenshot above, I have avi-background
at nil; you can set it to
t if you want a gray background.
avi-goto-char
After binding avi-goto-char
:
(global-set-key (kbd "π") 'avi-goto-char)
Here's the result of π b:
avi-goto-line
After binding avi-goto-line
:
(global-set-key (kbd "M-g f") 'avi-goto-line)
Here's the result of M-g f:
I've also added:
avi-copy-line
avi-move-line
avi-copy-region
These functions use the method of avi-goto-line
to copy/move stuff.
It might be useful for line-based text.
avi-goto-word-0
Here's the simple definition and the binding:
(defun avi-goto-word-0 ()
"Jump to a word start in current window."
(interactive)
(let* ((avi-keys (number-sequence ?a ?z))
(candidates (avi--regex-candidates "\\b\\sw")))
(avi--goto
(avi--process candidates #'avi--overlay-pre))))
(global-set-key (kbd "M-g e") 'avi-goto-word-0)
There might be quite a lot of candidates for this one, but there's no call to read-char
.
Here's what happens after M-g e:
avi-goto-word-1
Here's a version of it that reads one char:
(defun avi-goto-word-1 ()
"Jump to a word start in current window.
Read one char with which the word should start."
(interactive)
(let ((candidates (avi--regex-candidates
(concat
"\\b"
(string (read-char "char: "))))))
(avi--goto
(avi--process candidates #'avi--overlay-pre))))
(global-set-key (kbd "M-g w") 'avi-goto-word-1)
Here's what happens after M-g w b:
Outro
Give the new functions a go and see if you like them. New ideas are welcome, especially pertaining to ripping off vim plugins. I did the vimtutor once, but I have no idea how vim plugins work. But it turns out that I like Easymotion.