Search 在Emacs中搜索已标记(选定)的文本
我使用emacs查看和编辑代码和其他文本文件。我想知道是否有一种方法可以向前或向后搜索当前缓冲区中标记的文本。类似于我可以在记事本或写字板上做的。我可以在缓冲区中标记一些文本并执行C-s或C-r操作,并且能够使用标记的文本进行搜索,而无需实际键入整个搜索文本吗 谢谢, 罗希特是的Search 在Emacs中搜索已标记(选定)的文本,search,emacs,text,text-editor,Search,Emacs,Text,Text Editor,我使用emacs查看和编辑代码和其他文本文件。我想知道是否有一种方法可以向前或向后搜索当前缓冲区中标记的文本。类似于我可以在记事本或写字板上做的。我可以在缓冲区中标记一些文本并执行C-s或C-r操作,并且能够使用标记的文本进行搜索,而无需实际键入整个搜索文本吗 谢谢, 罗希特是的M-W(获取所选文本的副本)C-s C-y。然后根据需要重复C-s。同样地,对于C-r,Alex也会将其钉牢 我经常使用的另一个选项是C-scw来搜索当前标记后面的单词。反复点击C-w会增加额外单词的搜索(例如,C-s
M-W
(获取所选文本的副本)C-s C-y
。然后根据需要重复C-s
。同样地,对于C-r,Alex也会将其钉牢
我经常使用的另一个选项是C-scw
来搜索当前标记后面的单词。反复点击C-w
会增加额外单词的搜索(例如,C-s C-w C-w C-w
搜索当前标记后的3个单词)
类似地,
C-s M-s C-e
搜索当前标记后的行的其余部分,C-s C-M-y
搜索标记后的字符。它们都可以以相同的方式重复(前者是在C-s
之后笨拙地重复M-s C-e
)。最短的键序列是M-w C-s M-y。我使用的是以下方法,它不存在必须键入多个连续的C-s才能发现以后发生的问题:
(defun search-selection (beg end)
"search for selected text"
(interactive "r")
(kill-ring-save beg end)
(isearch-mode t nil nil nil)
(isearch-yank-pop)
)
(define-key global-map (kbd "<C-f3>") 'search-selection)
(取消搜索选择(结束)
“搜索所选文本”
(交互式“r”)
(压井环保存结束)
(isearch模式t nil nil)
(isearch yank pop)
)
(定义键全局映射(kbd“”)的搜索选择)
前面代码的缺点是将选定的文本复制到拉伸中。以下代码没有此问题:
(defun search-selection (beg end)
"search for selected text"
(interactive "r")
(let (
(selection (buffer-substring-no-properties beg end))
)
(deactivate-mark)
(isearch-mode t nil nil nil)
(isearch-yank-string selection)
)
)
(define-key global-map (kbd "<C-f3>") 'search-selection)
(取消搜索选择(结束)
“搜索所选文本”
(交互式“r”)
(让(
(选择(缓冲区子字符串无结束))
)
(停用标记)
(isearch模式t nil nil)
(isearch拉伸管柱选择)
)
)
(定义键全局映射(kbd“”)的搜索选择)
以上答案(包括公认的答案)对我来说太麻烦了。我发现了以下信息,并且更喜欢它:
“Ctrl+s Ctrl+w”。这将搜索当前单词,但您必须移动
首先将光标移到单词的开头
其他答案描述了如何搜索复制的文本,或如何在某个点搜索单词。但它们实际上都没有描述如何“用标记的文本进行搜索” 添加以下钩子将使当前选定的文本成为isearch使用的文本:
(defun jrh-isearch-with-region ()
"Use region as the isearch text."
(when mark-active
(let ((region (funcall region-extract-function nil)))
(deactivate-mark)
(isearch-push-state)
(isearch-yank-string region))))
(add-hook 'isearch-mode-hook #'jrh-isearch-with-region)
提示:这与。这有一个很好的功能:
i在点
处搜索前向符号。它突出显示您的点所在的单词的所有出现处-无需将点放置在单词的开头。然后您可以使用C-s或C-r移动到下一个或上一个
请注意,它是完全匹配的:例如,如果在hi
上使用它,它将不匹配chill
我将if映射到init文件中的
command-f
(mac OSX):(全局设置键(kbd“s-f”)“isearch forward symbol at point)
。您可以通过执行C-h k C-s找到C-s帮助,它说:
键入DEL以取消搜索字符串末尾的最后一个输入项。类型RET
要退出,请在找到的位置离开点。类型LFD(C-j)以匹配端部
当然可以。键入C-s再次向前搜索,键入C-r再次搜索
落后键入C-w将缓冲区中的下一个单词或字符猛拉到
结束搜索字符串,然后搜索它。键入要删除的C-M-w
搜索字符串末尾的字符。输入C-M-y,将字符从
缓冲到搜索字符串的末尾并搜索它。类型M-s C-e至
将行的其余部分拉到搜索字符串的末尾并搜索它。类型
C-y来拖动最后一串被终止的文本。键入M-y以替换字符串
只是猛拉到搜索提示中,在它之前字符串被杀死了。C-q型
引用控制字符以搜索它。键入C-x 8 RET以添加
按Unicode名称搜索的字符,带完成符。C-g同时
搜索或当搜索失败时,取消返回到已搜索内容的输入
已成功找到。搜索成功时,C-g将中止并
将点移动到起点
如果您试图在搜索字符串仍然为空的情况下退出,它将调用
非增量搜索
键入M-c以切换搜索区分大小写。键入M-s i以切换
在不可见文本中搜索。键入M-r以切换正则表达式模式。
键入M-s w以切换单词模式。键入M-s以切换符号模式。类型
M-s'切换字符折叠
键入M-s SPC以切换空白匹配。在增量搜索中,一个
一个或多个空格通常与
变量“search whitespace regexp”;另请参见变量
“isearch lax空白”和“isearch regexp lax空白”
键入M-s e以编辑微型缓冲区中的搜索字符串
还支持前16个搜索字符串的搜索环。
键入M-n以搜索搜索环中的下一项。类型M-p至
在搜索环中搜索上一项。C-M-i型至
使用搜索环完成搜索字符串
键入M-%以运行“查询替换”,并从上一个字符串替换
搜索字符串。键入C-M-%以使用最后一个
搜索字符串。键入M-s o以运行显示上次搜索的“发生”
一串键入M-s h r以运行高亮显示
最后一个搜索字符串
键入C-h b以显示所有Isearch键绑定。输入C-h k以显示
Isearch密钥的文档。键入C-h m以显示文档
i搜索模式
很高兴我能帮忙。顺便提一下,手册的相关章节是“20.1基础知识”