掌控所有项目文件(不仅仅是当前缓冲区)


15

因此,我希望helm-swoop查看项目中的所有文件,而不仅仅是当前打开的缓冲区集。

这样一来,我可以使用swoop查找项目中的所有事件,标记相关事件,然后进行编辑(在头盔swoops编辑模式下)。

我觉得使用Helm / Helm俯冲可能有一种干净的方法,但这是我尝试通过一种解决方案进行思考的尝试:

  1. 从弹丸收集文件名
  2. 从文件名列表创建缓冲区列表
  3. 除了使用此新缓冲区列表之外,还执行与helm-multi-swoop-all相同的例程

(projectile-current-project-files),它似乎为我提供了我要查找的文件列表。

因此helm-multi-swoop-all,看起来很容易复制然后进行调整。

(defun helm-multi-swoop-all (&optional $query)
  (interactive)
  "Apply all buffers to helm-multi-swoop"
  (cond ($query
         (setq helm-multi-swoop-query $query))
        (mark-active
         (let (($st (buffer-substring-no-properties
                     (region-beginning) (region-end))))
           (if (string-match "\n" $st)
               (message "Multi line region is not allowed")
             (setq helm-multi-swoop-query
                   (helm-swoop-pre-input-optimize $st)))))
        ((setq helm-multi-swoop-query
               (helm-swoop-pre-input-optimize
                (funcall helm-swoop-pre-input-function))))
        (t (setq helm-multi-swoop-query "")))
  (helm-multi-swoop--exec nil
                          :$query helm-multi-swoop-query
                          :$buflist (helm-multi-swoop--get-buffer-list)))

只需将对的调用替换为helm-multi-swoop--get-buffer-list使用弹丸列表提供缓冲区列表的调用即可。

但是现在我有点卡住了。我不确定如何创建一个缓冲区列表以从一组文件名输入到Helm-Swoop中。

我也忍不住想,有一种更简单的方法可以实现这一点,也许不需要自定义功能。


1
这是潜在的问题。假设您想为“ abc”切换一个大型项目。是否要为预览的每个文件打开文件缓冲区?您可能最终会得到不想要的十或二十个额外的缓冲区。我建议helm-projectile-ack改用。
PythonNut 2015年

2
是的,我没想到要在大型项目中使用它。我也希望关闭完成此例程后打开的文件缓冲区。
Mike McFarland

另外,头盔-射弹-ack(或ag)几乎是我想要的,除了我希望能够编辑线条(如头盔俯冲允许)
Mike McFarland 2015年

我实际上并没有使用helm-swoop。是否先做一个helm-projectile-grep,然后F3 M-x wgrep-mode使其“可编辑”?
PythonNut

谢谢,我不知道wgrep模式。Helm-projectile-grep正在为我整理被忽略的文件,但helm-projectile-ack与wgrep的配合良好。至少在卸载了来自melpa的wgrep并在这里使用一个后,它才能正常工作。
Mike McFarland

Answers:


7

遵循PythonNut的有趣评论,我通过安装helm-aghelm-projectile-ag射弹包中运行了C-c p s s。然后,我使用切换到编辑模式C-c C-e。我更改了几行,然后按C-c C-c将其保存到相关文件中。

这种方法有效,但是目前还不了解它会多次保存每个“匹配”文件,而不管是否进行了更改。我把它举成#756弹丸

除此之外,我认为它可以很好地满足问题中提到的需求,并且“没有自定义功能” :-)


这实际上也是我所确定的。我唯一遇到的问题是,有时ag搜索结果中不会忽略git / projectile忽略的文件。没时间去研究它。
Mike McFarland

提示:helm-git-grep应该比helm-projectile-ag
PlagueHammer

为什么要更快?
RichieHH
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.