【问题标题】:Emacs: change Ido completion keymap in minibufferEmacs:在 minibuffer 中更改 Ido 完成键映射
【发布时间】:2012-03-13 15:19:06
【问题描述】:

我使用 Ido 模式,也使用 Ergoemacs 模式,它将find-file 命令绑定到 C-o。在浏览文件时,可以通过在 minibuffer 中按 C-x C-f 来暂时禁用 Ido。我想把它改成C-o,这样我就可以按两次来运行find-file而不用Ido。我该怎么做?

ido.el 我看到 Ido 使用函数ido-init-completion-maps,它通过运行类似代码来定义键

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

但是我不确定如何使用它来将 ido-fallback-command 绑定到 minibuffer 中的 C-o

Emacs 版本:24.0.94.1

编辑 (20.03.12):在与 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

但是,当我在 minibuffer 中再次按 C-o 时,出现此错误:Debugger entered--Lisp error: (error "Command attempted to use minibuffer while in minibuffer") minibuffer 中的 C-x C-f 仍然用作备用命令。

我们发现 Ergoemacs 包与它有关。当我关闭 Ergoemacs 模式时,C-x C-fC-o 都作为备用命令工作。我尝试使用以下代码在minor-mode-map-alist 中交换 Ido 和 Ergoemacs 键盘映射:

(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)'

没用。

【问题讨论】:

    标签: emacs elisp ido


    【解决方案1】:

    你可以这样使用:

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

    【讨论】:

    • 我已经尝试过这个方法,以便通过将 C-o 设置为 nil 来禁用它,但这不起作用
    猜你喜欢
    • 2012-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多