Emacs的isearch一般都是激活以后直接搜索字符并上下跳轉(zhuǎn), 但是我們編程的時候, 往往搜索的內(nèi)容就是當(dāng)前光標(biāo)處的符號, 如果每次都敲一遍符號字符串效率就會非常低.
2008年的時候, 寫了插件 lazy-search.el, 主要的目的是, 自動激活當(dāng)前光標(biāo)處的符號, 然后直接按 s 或者 r 就可以在匹配的字符中快速跳轉(zhuǎn), 跳轉(zhuǎn)到目標(biāo)位置后按q退出搜索繼續(xù)編程
lazy-search.el
但是這個插件依賴我的另一個插件 one-key.el , on-key 是一個針對快捷鍵的菜單導(dǎo)航系統(tǒng), one-key.el 雖然強大但是配置還是比較折騰的.
所以, 今天把 lazy-search.el 重新調(diào)整了一下:
- 移除了對 one-key.el 的依賴
- 移除了很多不用的mark函數(shù), 因為用的最多的就是標(biāo)記光標(biāo)處的符號或者選區(qū)內(nèi)容
- 重構(gòu)了一些代碼和名字, 使得更容易理解
安裝
- 下載 lazy-search.el 里面的 lazy-search.el 放到 ~/elisp 目錄
- 把下面的配置加入到 ~/.emacs 中
(add-to-list 'load-path (expand-file-name "~/elisp"))
(require 'lazy-search)
(global-set-key (kbd "M-s") 'lazy-search)
使用方法
- 把光標(biāo)移動到想要搜索的符號位置
- 按 Alt + S 激活 lazy-search 模式
- 按照下面的按鍵跳轉(zhuǎn), 或者按 q 退出 lazy-search 模式
按鍵 | 命令 | 解釋 |
---|---|---|
s | lazy-search-jump-to-next-match | 跳轉(zhuǎn)到下一個匹配位置 |
r | lazy-search-jump-to-previous-match | 跳轉(zhuǎn)到上一個匹配位置 |
. | lazy-search-jump-to-first-match | 跳轉(zhuǎn)到第一個匹配位置 |
, | lazy-search-jump-to-last-match | 跳轉(zhuǎn)到最后一個匹配位置 |
i | lazy-search-jump-to-init | 跳轉(zhuǎn)到開始搜索的位置 |
j | lazy-search-view-next-line | 移動到下一行 |
k | lazy-search-view-previous-line | 移動到上一行 |
h | lazy-search-view-backward-char | 移動到前一個字符 |
l | lazy-search-view-forward-char | 移動到下一個字符 |
H | lazy-search-view-line-beginning | 移動到行首 |
L | lazy-search-view-line-end | 移動到行尾 |
J | lazy-search-scroll-up-one-line | 向上滾動一行 |
K | lazy-search-scroll-down-one-line | 向下滾動一行 |
e | lazy-search-scroll-down-one-page | 向上滾動一屏 |
Space | lazy-search-scroll-up-one-page | 向下滾動一屏 |
S | lazy-search-mark-symbol-or-region | 用光標(biāo)處的符號重新搜索 |
w | lazy-search-copy-object | 拷貝搜索對象 |
E | lazy-search-edit-object | 編輯搜索對象并重新搜索 |
c | lazy-search-search-previous-cache | 搜索上次搜索對象 |
Y | lazy-search-search-yank | 搜索yank內(nèi)容 |
t | lazy-search-to-isearch | 切換到 isearch 模式 |
q | lazy-search-quit | 退出 lazy-search 模式 |