Emacs dired模式和Isearch

5
我最近发现了Emacs的dired模式的一些功能和易用性。但是在Krusader中,我只需按下文件夹/文件的首字母并按Enter键,然后继续搜索另一个文件夹,聚焦,按Enter键,直到找到应该打开的文件。
现在我如何在dired中操作:
- 按Ctrl+S进行isearch - 按字母查找文件夹 - 按Enter键(或其他组合键)一次以退出I-search - 按Enter键进入文件夹或打开文件(对于打开文件,我知道还有其他字母)
我真的需要让这变得更容易。因此,我希望的主要事情是当我按一次Enter键时:
- 退出Isearch - 进入文件夹(或打开文件)
当然,第二个主要事情应该默认处于某种dired isearch模式,只需通过键入导航,只有在按ESC键时才处于单个字母具有命令含义的dired模式中。我不确定这个第二个主要事情是否容易实现或推荐使用dired。但是,我相信主要事情可以通过几行巧妙的Lisp代码实现,这是我不知道的:)
谢谢大家,
Stefan
3个回答

3
这里有一种方法来完成主要的事情:

这是一个做主要事情的方式:

(add-hook 'isearch-mode-end-hook 
  (lambda ()
    (when (and (eq major-mode 'dired-mode)
           (not isearch-mode-end-hook-quit))
      (dired-find-file))))

1
很好。我已经将(eq last-input-event ?\r)添加到(and)序列中,这样它只会捕捉到回车键,而不是其他退出搜索的按键。 - phils
1
对于 @phils 中的 ?\r 行不起作用的人,请参见 此处 - unvarnished

1

关于第二个主要事项:

(defadvice dired (after activate)
  (isearch-forward))

(ad-activate 'dired)


(defadvice dired-find-file (after activate)
  (isearch-forward))

(ad-activate 'dired-find-file)


(defadvice dired-up-directory (after activate)
   (isearch-forward))

(ad-activate 'dired-up-directory)

0
借鉴 madalu 的回答,您可以通过串联 isearches 来接近第二个主要内容:
(add-hook 'isearch-mode-end-hook 
  (lambda ()
    (when (and (eq major-mode 'dired-mode)
               (not isearch-mode-end-hook-quit))
      (dired-find-file)
      (isearch-forward-regexp))))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接