gpt4 book ai didi

bash - 将 bash 命令发送到 emacs 中打开的终端缓冲区

转载 作者:行者123 更新时间:2023-12-04 00:40:04 27 4
gpt4 key购买 nike

我最近一直在努力改善我的 emacs 生活,我做过的一件事是利用 projectileperspective 合理地组织我的缓冲区。

作为其中的一部分,我编写了一个 elisp 函数来打开(或返回)一个特定于项目的命名 ansi-term 缓冲区。这使我可以快速进入当前正在查看的项目的 bash 终端。

在探索 interwebs 之后,我一直难以发现的是,是否可以从 emacs 中将 bash 命令发送到一个开放的 ansi-term 缓冲区。具体来说,我正在尝试确保 ansi-term 缓冲区在首次打开时会进入正确的项目根目录。这需要首先从 projectile 包中获取上下文,所以我不能将它放入我的 .bashrc 中。

理想情况下,我可以编写一个 elisp 函数:

1) 按名称选择一个 ansi-term 缓冲区(因为我可以为每个项目打开一个具有唯一名称的缓冲区)

2) 在该缓冲区中发送并执行命令

有什么办法吗?

编辑

任何有兴趣的人的最终解决方案:

(defun visit-project-term-buffer ()
"Create or visit a terminal buffer."
(interactive)
(if (not (get-buffer (persp-ansi-buffer-name)))
(progn
(split-window-sensibly (selected-window))
(other-window 1)
(ansi-term (getenv "SHELL"))
(rename-buffer (persp-ansi-buffer-name))
(end-of-buffer)
(insert (format "cd %s" (projectile-project-root)))
(term-send-input))
(switch-to-buffer-other-window (persp-ansi-buffer-name))))

最佳答案

这对你有用吗?它切换到名为 *terminal* 的缓冲区并运行 echo hello:

(defun my-echo ()
(interactive)
(switch-to-buffer "*terminal*")
(end-of-buffer)
(insert "echo hello")
(term-send-input))

关于bash - 将 bash 命令发送到 emacs 中打开的终端缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32977707/

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