如何在Emacs中搜索第n个模式?

时间:2014-04-03 12:03:25

标签: emacs

我尽量避免使用elisp。我想我能够在Elisp中实现我的问题的解决方案,但那不是我想要的。

我正在寻找缓冲区中第n个字符串的出现。 例如,在foo的第4次出现之后,我已经尝试了 C-u C-s foo。但C-s不解释前缀。

Emacs中是否有一个简单/优雅的键序列来执行该作业?

1 个答案:

答案 0 :(得分:6)

search-forward是一个搜索下一个字符串的简单函数。它还接受一个可选的COUNT参数,用于搜索下一个COUNT个连续出现的事件。

不幸的是,您无法使用前缀参数调用它,因为它会查询输入。

你已经猜到了答案:把一些elisp扔在一起。

此函数会查询您的字符串和计数并执行搜索:

(defun search-forward-count (string count)
  (interactive "sString: \nnCount: ")
  (re-search-forward string nil nil count))

此函数向您查询字符串并使用prefix参数作为其计数:

(defun search-forward-prefix (count string)
  (interactive "p\nsString: ")
  (re-search-forward string nil nil count))