當我重新啓動它,我做這樣的事情經常(每週)在Emacs:設置emacs的貝殼
- 打開連接到RSH服務器的shell,執行某些命令,重命名緩衝
- 爲幾個不同的遠程機器重複step1
我在想:有沒有辦法讓我可以在啓動腳本中硬編碼這些設置?
當我重新啓動它,我做這樣的事情經常(每週)在Emacs:設置emacs的貝殼
我在想:有沒有辦法讓我可以在啓動腳本中硬編碼這些設置?
下面是啓動一個外殼,SSH-ES到主機的功能,並拖放到一個交互shell前運行的命令:
(defun start-remote-shell (host command)
(shell (format "*shell-%s*" host))
(sleep-for 0 500) ; Wait half a second for the prompt to appear
(insert (format "ssh -t %s %s'; exec bash -i'"
(shell-quote-argument host)
(shell-quote-argument (shell-quote-argument command))))
(comint-send-input))
你可以把這個片段到您的.emacs
文件,其次是你想具體的調用,如:
(start-remote-shell "server-one" "apache start")
(start-remote-shell "server-two" "mysql start")
(start-remote-shell "server-three" "foo start")
我遇到ansi-color-apply-on-region「標記不指向任何地方」我做了一些搜索,有人建議等待提示時間不夠長,但是在我將其更改爲3秒後,我仍然有同樣的問題。 – zinking 2012-07-27 08:42:54
我覺得這樣的事情可以幫助你:
(mapc (lambda (server)
(shell (concat "*shell-" server "*"))
(insert "ls")
(comint-send-input)
(insert "ps ax")
(comint-send-input))
'("server1" "server2"))
正如你所看到的,插入寫入控制檯,並且使用comint-send-input就像在終端中敲回車鍵。 在這個例子中,ls和ps將在兩個shell緩衝區中執行
是的,打錯了答案 – 2012-07-23 17:26:59
幾乎任何東西都可以使用emacs。您需要在lisp中編寫自定義函數,並將其放入.emacs文件中。 – EdH 2012-07-23 02:06:39
@愛德華啊,我知道它應該是可能的,因爲我沒有做很多的EMAC定製,並且幾乎沒有寫任何LISP函數,你能指點我一些這樣的例子。 – zinking 2012-07-23 02:12:51
您是否必須輸入密碼才能連接到遠程服務器? – Thomas 2012-07-23 02:55:37