2013-01-22 22 views
3

我使用a来挖掘dired。使用^返回对我来说是非常不直观的。我想把它改成别的东西,比如b或r。 我该怎么做?我无法获得全球设置密钥的工作。在emacs中绑定^给一些更简单的键

〜干杯! NJ

回答

4

(define-key dired-mode-map [yourkey] 'dired-up-directory)

代替[yourkey],你可以把喜欢[高达]名称,或 “B” 或 “R”,而这只会在dired,笔记。

(define-key dired-mode-map "b" 'dired-up-directory)

你也可以做,例如控制起来。记住,在某些情况下,它更容易使用[],所以你最好更换[yourkey][C-up](直译)

的理念是:定义了特定地图的关键,并将其绑定到你所需要的功能。如果你知道下一次你自己怎么做这种事情,知道任何你有结尾的模式(-mode-map),那么LaTeX-mode-map,emacs-lisp-1,模式图等 那些你用define-key

如果你想知道什么功能附加到绑定,使用C-h k(控制+ H,则k) 其次是你的关键,它会告诉你什么是函数被调用,可以绑定到别的东西(确保在dired-mode处于活动状态时可以调用它!)。

+0

如果您使用某个非qwerty关键字,其中'^'是一个死键,您可以通过绑定到'dead-ircumflex'来使用它: keydird-mode-map [dead-circumflex]'dired-up-directory)' – AdrieanKhisbe

4

替代地,如果使用这里示出的的elisp:

C-H我克(dired-x) Optional Installation Dired JumpRET

可以使用C-XC-Ĵ调用dired-jump

这比dired-up-directory更好,因为它也在文件缓冲区中工作(在这种情况下,它会将您带到dired中的父目录)。

在所有情况下,生成的dired缓冲区都将点设置为您来自的文件或目录。

+0

快捷键比唯一键^更长,但是Cx Cj是一个很好的技巧。它完全按照所要求的内容,向上一个目录。 – thdox

0

为了什么是值得的,我使用以下命令使用e

(add-hook 'dired-mode-hook 
      (lambda() 
      (define-key dired-mode-map (kbd "e") 
       (lambda() (interactive) (find-alternate-file ".."))))) 

这比dired-up-directory不同,它停留在当前的缓冲区,而不是在一个新的缓冲加载的父目录。 (我曾经关心未使用的缓冲区)。

+0

@phils,你是对的,我在'init'中把它作为'lambda',我改变了这个帖子,莫名其妙地想'lambda'一定不适合。 – harpo