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