我一直在使用ido模式幾個月,隨着哆哆嗦嗦打開,我通常很滿意。不過,我希望有一件事可以改變。當我輸入C-u M-x shell以創建一個具有特定名稱的新shell緩衝區時,ido向我提供了所有打開的緩衝區的完成列表。如果我選擇了一個,那麼在該緩衝區中啓動一個新的shell,並將其置於shell模式,無論它包含什麼。很難想象這是一個有用的用例。禁用特定命令的ido模式?
是否有一種方法可以僅禁用shell命令的ido-mode? (以及當然我可能會遇到的其他類似命令)
我一直在使用ido模式幾個月,隨着哆哆嗦嗦打開,我通常很滿意。不過,我希望有一件事可以改變。當我輸入C-u M-x shell以創建一個具有特定名稱的新shell緩衝區時,ido向我提供了所有打開的緩衝區的完成列表。如果我選擇了一個,那麼在該緩衝區中啓動一個新的shell,並將其置於shell模式,無論它包含什麼。很難想象這是一個有用的用例。禁用特定命令的ido模式?
是否有一種方法可以僅禁用shell命令的ido-mode? (以及當然我可能會遇到的其他類似命令)
嘿,事實證明,無論您是否啓用ido-everywhere
,您都會得到相同的完成選項。
有沒有內置的方式來做你想做的。 ido-mode
只爲您提供掛鉤,以便能否覆蓋find-file
行爲是否被ido
接管。 read-buffer
目前是總是被ido-everywhere
覆蓋。
幸運的是,一個小的Emacs Lisp可以得到你想要的東西:
(put 'shell 'ido 'ignore)
(defadvice ido-read-buffer (around ido-read-buffer-possibly-ignore activate)
"Check to see if use wanted to avoid using ido"
(if (eq (get this-command 'ido) 'ignore)
(let ((read-buffer-function nil))
(run-hook-with-args 'ido-before-fallback-functions 'read-buffer)
(setq ad-return-value (apply 'read-buffer (ad-get-args 0))))
ad-do-it))
而對於任何其他命令你不想緩衝區選擇以下ido-everywhere
可以通過簡單地增加一個新的表達你的定製。 emacs的:
(put 'other-command-i-want-untouched 'ido 'ignore)
我知道,對於某些命令,使用最後兩次快捷方式暫時禁用IDO(例如,打開文件,'CX比照Cf'使用在迷你傳統的文件打開的界面),但我不不知道'Mx'命令。 – Seki