我每天使用i-search前进/后退一百万次,但我仍然没有想出如何确定焦点是否仍在迷你缓冲区中。
我相信我的困惑源于搜索失败,然后尝试修改搜索参数,那就是文档被错误修改,因为焦点已经离开了迷你缓冲区 - 但是,我被欺骗了以为迷你缓冲区仍处于活动状态,因为我的搜索字词仍然显示 - 例如,
Failing wrapped I-search backward: abcdefg
Failing overwrapped I-search: abcedfg
Wrapped I-search: abcedfg
Overwrapped I-search backward: abcefg
Failing wrapped I-search: abcedfg
关于如何调整/修改i-search前进/后退的任何想法,以防止这种情况发生?
当isearch处于活动状态时,文档模式行可能会变为非活动状态,并且只要isearch函数完成,模式行就可以更新为活动状态。也许还有一条信息 - “功能已经退出。”
我正在考虑的是,当我正在搜索时,我正在考虑将我的文档设为只读,但当然这样会有点过分。
任何建议都将不胜感激。
答案 0 :(得分:2)
事情是,除非你使用M-e
编辑搜索字符串,否则在isearch期间,不是在迷你缓冲区中;它在你的文件中。我肯定是一个欣赏大量背景提示的人,但我从来没有发现isearch指示是不够的(Isearch
在模式中,I-search:
低于它,突出显示活动搜索结果,突出显示其他搜索结果)。
当您使用RET
退出isearch时,状态行会显示“标记保存在搜索开始的位置”。除非您将search-edit-option
设置为非默认值,否则除了特定于isearch的命令或输入之外的任何内容都将退出搜索。
如果您确实需要更多关于isearch正在进行的指示,可以使用isearch-mode-hook
和isearch-mode-end-hook
。例如,要更改模式行颜色:
(add-hook 'isearch-mode-hook
(lambda ()
(set (make-local-variable 'isearch-mode-line-face-remap-cookie)
(face-remap-add-relative
'mode-line '((:foreground "ivory" :background "red") mode-line)))))
(add-hook 'isearch-mode-end-hook
(lambda ()
(face-remap-remove-relative isearch-mode-line-face-remap-cookie)))
或者,如果仍然没有足够高的可见度,您可以更改缓冲区文本的背景颜色:
(add-hook 'isearch-mode-hook
(lambda ()
(set (make-local-variable 'isearch-default-face-remap-cookie)
(face-remap-add-relative
'default '((:background "yellow") default)))))
(add-hook 'isearch-mode-end-hook
(lambda ()
(face-remap-remove-relative isearch-default-face-remap-cookie)))
顺便说一下,如果您还没有尝试过,请在C-h m
时按isearch
;有很多绑定可以让你自定义搜索,我在Emacs使用的第一个〜15年内没有意识到这一点。
答案 1 :(得分:2)
@NicholasRiley澄清了事情。要添加一点,以防它有用:
Isearch+(库`isearch+.el)使用模式行和Isearch提示来显示有关搜索状态的更多信息:
区分大小写的模式行轻微模式:ISEARCH
表示不区分大小写; Isearch
,区分大小写。
搜索结束时,打火机会突出显示。
突出显示提示的部分内容,以指示搜索类型:正则表达式,单词,多缓冲区以及搜索是否已包围缓冲区。
使用库oneonone.el
,独立迷你缓冲框架的背景在Isearch期间具有不同的颜色。即使你不想要一个独立的迷你缓冲区,一般的想法可能会有所帮助。它使用这些钩子:
(add-hook 'isearch-mode-hook '1on1-color-isearch-minibuffer-frame)
(add-hook 'isearch-mode-end-hook '1on1-color-minibuffer-frame-on-exit)
(add-hook 'minibuffer-setup-hook '1on1-color-minibuffer-frame-on-setup)
(add-hook 'minibuffer-exit-hook '1on1-color-minibuffer-frame-on-exit)