【发布时间】:2014-01-06 15:13:15
【问题描述】:
我越来越多地使用 emacs shell-mode,还有一些我希望可以改进的地方:更改目录时的补全。我很乐意为此使用 ido 或 projectile-find-dir。
我的工作流程
截至今天,我尽我所能在 emacs 的 shell 之外,尽可能地使用 emacs 的功能(使用 ido 访问文件,使用 projectile 在项目中查找文件,探索里面的树干枯了,……)。
我不经常CD。当我在另一个项目中工作时,我会打开另一个 shell 缓冲区。但是当我不得不这样做时,我真的很想念 ido 或 fasd shell 实用程序(它可以工作,但没有它的完成接口,这对 zsh 来说很棒,而且它不如使用 ido 强大是https://github.com/clvv/fasd)。
如何在 elisp 中连接它?
我知道我们可以给ido-completing-read一个名单;
在 shell 中,输入 cd ../<TAB> 会打开一个新的 *Completions* 缓冲区。它使用comint-dynamic-completion,但如何在 elisp 列表中获取该列表,而不是在缓冲区中?
- 是否可以将该完成列表连接到 ido 中? (或弹丸或头盔或其他)
- 如果您将我链接到准确的文档,我也将不胜感激(有很多,很难知道什么对我有用)
- 或者是否存在解决方案?
谢谢!
编辑:这是另一个使用 fasd 实用程序和 ido 完成 cd 到最近访问过的目录的好方法:https://gitlab.com/emacs-stuff/fasd-shell/blob/master/README.org
ps:eshell 不适用于某些 shell 脚本,我想保持 shell 模式。
【问题讨论】:
-
关于你的 PS,如果你没有很多 shell 脚本,就像我一样,我会运行 M-& for async-shell-command。