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 如何让buffer变的可交互 让buffer操作shell