如何在目录内更改emacs helm-find-file默认操作而不是在dired中打开?

时间:2014-12-26 02:44:27

标签: emacs emacs-prelude emacs-helm

我正在使用emacs前奏曲。

我最近决定从ido切换到掌舵。

所以我在emacs前奏中启用了helmhelm-everywhere

除了helm-find-file

的默认行为外,一切都很完美

在Ido中,我可以点击ret以查看所选目录,但我必须在掌舵中点击rightc-j。 此外,helm-find-files会在每个目录的最顶部列出...。 这意味着在ido中,我可以点击ret ret ret,直到我到达最终目的地,如果路径上的目录不多。

但掌舵时,我必须键入一些字符,点击c-j键入至少1个字符,点击c-j,依此类推。 我甚至无法连续点击c-j

我不想切换回ido,因为我真的很喜欢find-file中的helm grep功能。

无论如何我可以更改默认顺序,可以在底部列出...ret进入目录而不是打开直接?

1 个答案:

答案 0 :(得分:9)

您正在寻找的功能是(helm-execute-persistent-action),默认情况下绑定到C-z。有些人喜欢用tab切换它:

(define-key helm-map (kbd "<tab>") 'helm-execute-persistent-action)
(define-key helm-map (kbd "C-z") 'helm-select-action)

如果您愿意,可以将其绑定到ret,但它不会按照您期望的方式打开文件。

至于你的另一个问题,我不知道helm是否有办法设置默认选择位置,但是从顶部选择第一项你可以这样做:

(define-key helm-map (kbd "C-j")
  (lambda ()
    (interactive)
    (helm-move-selection-common :where 'edge :direction 'previous)
    (helm-move-selection-common :where 'line :direction 'next)
    (helm-move-selection-common :where 'line :direction 'next)
    (helm-execute-persistent-action)))