2012-03-13 65 views
4

我使用Ido模式并使用Ergoemacs模式,该模式将find-file命令绑定到C-o。当您浏览文件时,可以通过在minibuffer中按C-x C-f暂时禁用Ido。我想将它更改为C-o,所以我可以按它两次以运行find-file而不使用Ido。我怎样才能做到这一点?Emacs:更改迷你缓冲区中的Ido完成键盘映射

ido.el我看到伊多使用功能ido-init-completion-maps,它通过运行代码像

(let ((map (make-sparse-keymap))) 
    (define-key map "\C-x\C-f" 'ido-fallback-command)) 

定义按键但是我不知道如何使用这个绑定ido-fallback-commandC-O内小缓冲区。

Emacs的版本:24.0.94.1

编辑(12年3月20日):与Francesco讨论后我评价:(define-key ido-file-completion-map "\C-o" 'ido-fallback-command)

现在当我按C-h k C-o我看到这行:C-o Fallback to non-ido version of current command

然而,当我再次按C-O在迷你缓冲区中,我得到这个错误:Debugger entered--Lisp error: (error "Command attempted to use minibuffer while in minibuffer")C-X C-F小缓冲区中仍然担任后备命令。

我们发现Ergoemacs软件包与它有关。当我关闭Ergoemacs模式时,两个C-x C-fC-o作为回退命令。我试着换伊和Ergoemacs键盘映射在minor-mode-map-alist使用下面的代码:

(let ((elem (first 
     (remove-if-not 
      '(lambda (item) (equal 'ido-mode (car item))) 
      minor-mode-map-alist)))) 
    (setq minor-mode-map-alist (remove elem minor-mode-map-alist)) 
    (add-to-list 'minor-mode-map-alist elem)) 

(define-key ido-file-completion-map "\C-o" 'ido-fallback-command)' 

没有工作。

回答

5

您可以使用这样的事情:

(define-key ido-file-completion-map "\C-o" 'ido-fallback-command)