最近我一直在努力改善我的 emacs 生活,我所做的一件事就是合理地利用projectile
和perspective
组织我的缓冲区。
作为其中的一部分,我编写了一个 elisp 函数来打开(或返回)一个特定于项目的命名 ansi-term 缓冲区。这使我可以快速进入我正在查看的项目的 bash 终端。
在探查互联网后,我一直难以发现的是是否可以从 emacs 中将 bash 命令发送到打开的 ansi-term 缓冲区。具体来说,我试图确保 ansi-term 缓冲区在第一次打开时 cds 到正确的项目根目录。这需要首先从包中获取上下文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))))