在Emacs中search标记(选定)的文本
我使用emacs查看和编辑代码和其他文本文件。 我想知道是否有方法向前或向后search当前缓冲区中标记的文本。 类似于我可以在记事本或写字板中做的事情。 如在我可以标记缓冲区中的一些文本,做一个Cs或Cr,并能够search标记的文本,而不必实际input整个search文本?
谢谢,
罗希特
是。 MW
(获取所选文本的副本) Cs <RET> Cy <RET>
。 然后根据需要重复Cs
。 对于Cr
。
@亚历克斯指甲。
我常用的另一个选项是Cs Cw
在当前标记之后search单词。 击打Cw
反复增加search的额外字(例如, Cs Cw Cw Cw
search当前标记之后的3个字)。
同样, Cs Cy
在当前标记和Cs CMy
search标记之后的字符后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)
最短的密钥序列是M – W C – s M – y 。
其他答案描述了如何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