在Emacs中search标记(选定)的文本

我使用emacs查看和编辑代码和其他文本文件。 我想知道是否有方法向前或向后search当前缓冲区中标记的文本。 类似于我可以在记事本或写字板中做的事情。 如在我可以标记缓冲区中的一些文本,做一个Cs或Cr,并能够search标记的文本,而不必实际input整个search文本?

谢谢,

罗希特

是。 MW (获取所选文本的副本) Cs <RET> Cy <RET> 。 然后根据需要重复Cs 。 对于Cr

@亚历克斯指甲。

我常用的另一个选项是Cs Cw在当前标记之后search单词。 击打Cw反复增加search的额外字(例如, Cs Cw Cw Cwsearch当前标记之后的3个字)。

同样, Cs Cy在当前标记和Cs CMysearch标记之后的字符后search剩余的行。 这些都是以同样的方式可重复的。

我正在使用下面这个不需要input多于一个连续的Cs来查找以后出现的问题:

  (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) 

前面的代码的缺点是选定的文本被复制到延伸。 下面的代码没有这个问题:

  (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) 

最短的密钥序列是MW Cs My

其他答案描述了如何search复制的文本,或者如何在点上search单词。 但是他们中没有一个真正描述如何“用标记的文本进行search”。

添加下面的钩子将使得当前select的文本是用于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) 

提示:这与扩展区域很好地配对。

这有一个很好的function: isearch-forward-symbol-at-point 。 它会突出显示所有出现的单词所在的位置 – 无需将单词放在单词的开头。 然后你可以移动到下一个或上一个Cs或Cr。

请注意,这是一个完全匹配:如果您使用它hi它不会匹配chill例如。

我在init文件中映射了如果是command-f (mac OSX):( (global-set-key (kbd "sf") 'isearch-forward-symbol-at-point)

上面的答案(包括接受的答案)太麻烦了,恕我直言。 我发现以下信息,并喜欢它:

“Ctrl + s Ctrl + w”。 这将search当前单词,但必须先将光标移动到单词的开头。

http://xah-forum.blogspot.com/2009/08/search-word-under-cursor-in-emacs.html