Helm:在缓冲区内搜索吗?


11

一个基本的头盔问题。Helm的窗口/命令/功能是什么,可让我们regexp在任何类型的缓冲区(即,包括诸如之类的只读)中搜索文本(最好使用w3m)?

换句话说,我正在寻找Helm等效于isearch-forwardC-s)/ isearch-backwardC-r)的Emacs原生命令。

举例说明:调用其中一个本机isearch命令(C-sC-r)之后,我们可以通过以下两种方式之一退出搜索模式:

  1. 我们可以退出并返回原始点(通过C-g),或者

  2. 我们可以从当前点退出缓冲区,并继续浏览缓冲区,即从当前匹配的文本中(通过RET其他方法)。

我正在寻找这两个选项中的第二个。


到目前为止,这是我尝试过的方法:

  • helm-regexp:这是最接近我要查找的内容,但它只执行C-s/ C-r+ 的等效功能C-g(即,它使我们回到了原来的位置;没有选项可终止搜索并继续从当前匹配的内容中浏览缓冲区点)。

  • helm-do-grep:似乎这仅用于在文件中搜索文本(即,在w3m上不起作用)

  • helm-buffer-run-grep/ -zgrep:运行此命令/功能会在迷你缓冲区中导致错误消息:Running helm command outside of context

  • helm-mode启用时,调用C-sC-r带来了Emacs的原生isearch功能(它不是由头盔的接口代替)。(也许有一个可以更改的设置,以便Helm可以接管此命令?即,类似于Helm接管write-fileC-x C-w)的本机命令的方法,该命令可用于重命名打开缓冲区中的文件。只是集思广益。)


1
你想helm-occurfollow-mode启用。
nispio 2014年

Answers:


16

您可以将helm-occur用作基本helm模块随附的工具。但是对我来说,用于缓冲搜索的最好的基于头盔的工具之一是福山信吾(Shingo Fukuyama)的头盔切换。您可以从github或通过MELPA获取它。它具有您需要的功能,可以将您的分数放到比赛的位置(可以是正则表达式)。但是,您也可以使用Cg将光标移回开始的位置。

在helm-swoop github页面上,您会找到该程序包提供的一大堆其他有用的功能(包括通过helm-multi-swoop进行的多缓冲区搜索以及编辑结果行的功能,以便进行更改)应用于基础缓冲区)。


我同意。helm-swoop确实是的改进版本helm-occur
Tu Do

所以,我在这方面有些迟了。我尝试过helm-swoop...我再也回不去了!谢谢
iceman 2014年

好主啊,掌舵飞跃不是这个世界上的东西。
Leo Ufimtsev'2

5

您可以helm-occur用来查看包含与您的搜索模式匹配的所有行。您可以使用C-nC-p浏览列表,然后按RET关闭Helm缓冲区,并将光标跳到匹配的行。

我喜欢helm-follow-mode在使用时启用,helm-occur以便源窗口始终显示当前选定匹配的上下文。您可以如下自动启用跟随模式:

(require 'helm-config)

(defvar my-helm-follow-sources ()
  "List of sources for which helm-follow-mode should be enabled")

;; Use helm-follow-mode for the following sources:
(add-to-list 'my-helm-follow-sources 'helm-source-occur)

(defun my-helm-set-follow ()
  "Enable helm-follow-mode for the sources specified in the list
variable `my-helm-follow-sources'. This function is meant to
be run during `helm-initialize' and should be added to the hook
`helm-before-initialize-hook'."
  (mapc (lambda (source)
          (when (memq source my-helm-follow-sources)
            (helm-attrset 'follow 1 (symbol-value source))))
        helm-sources))

;; Add hook to enable helm-follow mode for specified helm 
(add-hook 'helm-before-initialize-hook 'my-helm-set-follow)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.