如何让eshell自动完成功能像Bash和Emacs一样,即它提供一个选择列表而不是任意选择一个?
例如,如果我有两个目录“下载”和“下载”,当我输入“向下”并点击TAB时,我希望弹出另一个缓冲区并向我显示选项。但是eshell只是为我完成它,即如果我按TAB,它就完成了“下载”;再次点击TAB,它会变为“下载”。
答案 0 :(得分:6)
使用此:
(add-hook
'eshell-mode-hook
(lambda ()
(setq pcomplete-cycle-completions nil)))
答案 1 :(得分:6)
(add-hook
'eshell-mode-hook
(lambda ()
(setq pcomplete-cycle-completions nil)))
和
(setq eshell-cmpl-cycle-completions nil)
当我将emacs作为'emacs -q'运行以避免我自己的自定义时,两者都会按照您的要求显示并列出完成的缓冲区。这是emacs 23.3,你运行的版本更旧吗?
另见http://www.emacswiki.org/emacs/EshellCompletion这是我第一次去看看的地方。
尝试这一步的步骤:
答案 2 :(得分:2)
您只需要拥有以下一行:
(setq eshell-cmpl-cycle-completions nil)
eshell-mode
会自动将pcomplete-cycle-completions
设置为本地eshell-cmpl-cycle-completions
的值。