5

find-file私は Ido モードを使用し、コマンドをにバインドする Ergoemacs モードも使用しC-oます。ファイルをブラウズしているときに、C-x C-fミニバッファー内を押すと Ido を一時的に無効にすることができます。に変更したいC-oので、2回押すとfind-fileIdoなしで実行できます。どうやってやるの?

ido.elIdo は function を使用していることがわかります。ido-init-completion-mapsここでは、次のようなコードを実行してキーを定義します。

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

ido-fallback-commandただし、これを使用してミニバッファー内にバインドする方法がわかりませんC-o

Emacs バージョン: 24.0.94.1

編集 (20.03.12) :フランチェスコとの話し合いの後、私は次のように評価しました: (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-mode をオフにすると、C-x C-fとの両方C-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)'

うまくいきませんでした。

4

1 に答える 1

6

次のようなものを使用できます。

(define-key ido-file-completion-map "\C-o" 'ido-fallback-command)
于 2012-03-13T15:30:24.010 に答える