Emacs Shell模式:如何让TAB字符通过?

Posted

技术标签:

【中文标题】Emacs Shell模式:如何让TAB字符通过?【英文标题】:Emacs Shell mode: how to make TAB character pass through? 【发布时间】:2011-06-08 23:50:47 【问题描述】:

有没有办法让 TAB 在 Emacs“Shell 模式”中传递到 shell?我在 Emacs 内的 Shell 内启动交互式控制台,它通常会打印候选人列表以响应 TAB

我尝试了 M-x local-set-key RET C-z self-insert-command,但这只是在 Shell 缓冲区中插入 TAB

【问题讨论】:

【参考方案1】:

C-qTAB

一般来说,C-q 允许您在 Emacs 中“引用”以下字符(不仅仅是 shell 模式),绕过可能绑定到它的任何函数。

【讨论】:

这与“M-x local-set-key RET C-z self-insert-command”的效果相同——它将TAB插入Buffer而不是传递给shell @Yuroslav:嗯,我实际上测试了它。 M-x 外壳,cat RET,C-q TAB xxx RET。输出确保它看起来像是被“cat”命令读取的选项卡...... hm...我正在尝试使用 shell 的 TAB 自动完成功能,但它似乎没有这样做。 M-x term 可以,但它会将 ALL Emacs 击键发送到 shell,而我只希望通过 TAB【参考方案2】:

Shell 模式可帮助您在 emacs 中构建命令,并在您按下回车键时将它们发送到某个进程。在 Bourne shell 等较旧的 shell 和其他不允许行编辑的交互式命令中非常有用。

另一方面,所有按键都由 emacs 处理,因此您正在运行的命令一次只能看到整行。如果您想立即发送选项卡,而不是按回车键,我认为 shell-mode 不会这样做。

你试过 M-x ansi-term 吗?

【讨论】:

【参考方案3】:

所以问题是你想要 tab-completion,但你没有得到它?

当您处于 shell 模式时,C-hkTAB 会告诉您什么?

默认情况下,它应该绑定到应该提供制表符补全的comint-dynamic-complete,但某些东西可能会破坏该绑定。

您还可以运行 emacs -Q 来查看在没有加载任何自定义或站点配置文件的情况下会发生什么。

【讨论】:

以上是关于Emacs Shell模式:如何让TAB字符通过?的主要内容,如果未能解决你的问题,请参考以下文章

Emacs shell 模式中的 Bash 自动完成

emacs 如何让buffer变的可交互 让buffer操作shell

Mac OS X:如何在emacs客户端的shell中永久更改提示符(PS1的值)?

Emacs术语模式:通过双击鼠标选择单词

在 Emacs 中以文本模式设置 4 空格缩进

ubuntu12.04中用emacs进行shell编程怎么配置呢?