gpt4 book ai didi

sql - Gnu Emacs : tab-completion for psql running within sql. el 进程

转载 作者:行者123 更新时间:2023-11-29 12:06:35 25 4
gpt4 key购买 nike

我喜欢在 psql.el 下运行 Postgres 客户端“psql”,同时在单独的窗口中与 .sql 文件交互。有时,我想在运行 psql 进程的缓冲区内使用制表符补全来查找适当的表名的名称。但是,我无法弄清楚如何导致预期的结果。

这里提出了一个非常相关的问题:https://superuser.com/questions/236574/how-can-i-send-a-literal-tab-to-bash-in-emacs-shell-mode

没有任何成功的建议。

提前致谢!

设置跳转

最佳答案

通常设计用于交互式使用的程序(当它们拥有终端时)在管道中使用时会禁用交互式功能(例如 UP/DOWN 的历史记录,TAB 的完成)。

Emacs 通常对外部进程使用管道。因此交互功能被禁用。

即使您发送 TAB,您的客户端程序也不会按照您的意愿为您解释它。

您可以阅读程序的 man/help 并通过提供命令行开关(如 GNU Bash 的 --login)尝试强制交互模式。

发送 TAB 评估:

(defun my-comint-send-string (string)  "Send string to comint buffers. Useful for *compilation* read-only buffer."  (interactive   (list (read-input "Type string: " nil 'my-comint-send-hist-list)))  (comint-send-string (get-buffer-process (current-buffer)) string))(define-key XXX-mode-map [C-return] 'my-comint-send-string)

并使用这样的键序列:C-RET C-q TAB RET

但是如果为程序的 stdio 启用了缓冲,这可能不起作用(要刷新输入,您还必须发送 \n)...

大部分相同的问题在 Bash autocompletion in Emacs shell-mode 上讨论过

注意 M-x 术语使用伪终端,因此所有交互式程序都按需要工作。但是在这种模式下,您将失去任何 Emacs 编辑功能...

关于sql - Gnu Emacs : tab-completion for psql running within sql. el 进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7587072/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com