我如何才能使 eshell 自动完成功能表现得像 Bash 和 Emacs 一样,即它提供了一个选择列表,而不是为你任意选择一个?
例如,如果我有两个目录“Download”和“Downloads”,当我键入“Down”并点击 TAB 时,我希望会弹出另一个缓冲区并向我显示选择。但是eshell只是为我完成了它,即如果我按TAB,它会完成“下载”;再次点击 TAB,它变为“下载”。
用这个:
(add-hook
'eshell-mode-hook
(lambda ()
(setq pcomplete-cycle-completions nil)))
(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,这是我第一次去检查的地方。
尝试这个的步骤:
You only need to have the following line:
(setq eshell-cmpl-cycle-completions nil)
eshell-mode
automatically set pcomplete-cycle-completions
to the value of eshell-cmpl-cycle-completions
locally.