我一直在努力最近改善emacs生活,我做的一件事就是利用projectile
和perspective
合理地組織我的緩衝區。發送bash命令到emacs中打開的終端緩衝區
作爲其中的一部分,我編寫了一個elisp函數來打開(或返回)一個指定項目特定的ansi-term緩衝區。這使我可以快速進入我目前正在查看的項目的bash終端。
我在管道連接後發現了一些問題,是否可以從bash命令發送emacs中的打開的ansi-term緩衝區。具體來說,我試圖確保首次打開時,ansi-term buffer cds到正確的項目根目錄。這需要首先從projectile
包中獲取上下文,所以它不是我可以插入到我的.bashrc
中的內容。
理想我想能寫一個elisp的功能:
1)選擇由名稱的ANSI長期緩衝區(因爲我可以有一個與每個項目的唯一名稱)
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))))
聲音很酷,會給出一個嘗試。你看過'shell-pop'和'shell-here'嗎? http://wikemacs.org/wiki/Shell#shell-pop他們沒有完全回答你的問題,因爲當你想爲很多不同的項目(和我也!),shell-pop將使用一個單一的shell窗口,但他們的代碼可能有幫助。 – Ehvince