使 eshell 选项卡完成行为类似于 Bash



如何使 eshell 自动完成行为像 Bash 和 Emacs 一样,即它提供了一个选项列表,而不是为你随意选择一个?

例如,如果我有两个目录"下载"和"下载",当我键入"向下"并按 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 -q"运行我的 emacs 时完成的情况,以避免我自己的自定义。这是 emacs 23.3,你运行的是旧版本吗?

另请参阅 http://www.emacswiki.org/emacs/EshellCompletion 这是我第一次去查看的地方。

尝试此操作的步骤:

  1. 使用 'emacs -q' 作为命令启动 emacs——没有其他参数。
  2. 更改为*暂存*缓冲区
  3. 粘贴或键入上述代码片段之一
  4. 将光标放在代码段的末尾,然后按"C-e"执行代码。
  5. 启动 eshell
  6. 测试
  7. 如果两者都不起作用,请在此处报告您的版本信息和任何其他相关详细信息

您只需要以下行:

(setq eshell-cmpl-cycle-completions nil)

eshell-mode自动将pcomplete-cycle-completions设置为本地eshell-cmpl-cycle-completions的值。

相关内容

  • 没有找到相关文章

最新更新