2013-08-23 57 views
3

我最近開始使用Emacs作爲我的主編輯器。有一件事困擾我: 當我在我的shell中啓動Emacs時,它會在新窗口中啓動Emacs。我希望它在shell中調用,並在工作區調用它時在新窗口中啓動。從外殼啓動時在shell中啓動Emacs

這可以通過一些我錯過的配置來實現,或者是任何類型的lisp嗎?

我使用Manjaro與Xfce和魚貝(http://fishshell.com/

問候, 羅賓

+5

你的意思是像'emacs -nw'? – jlahd

+0

謝謝jlahd,我不知道'emacs -nw'。有沒有在shell中啓動時用-nw自動調用emacs的方法? – robotroll

+2

您應該爲您的shell創建一個別名,例如'alias em「emacs -nw」'。之後,在shell中說'em'運行'emacs -nw'。 – jlahd

回答

4

因此,有別名的解決方案,但PB我遇到的是,我有時會emacs的用Ctrl睡覺-z然後我忘記了我已經啓動了一個emacs會話,所以我再次使用我的別名,最終在終端中出現了兩個emacs,這讓我很煩惱。 於是我就用它檢查是否一個Emacs正在運行的功能:

cemacs() { 
if (ps|grep emacs); then 
    echo "Hey, emacs is already running";  
    fg %emacs 
else 
    emacs -nw [email protected] 
fi 
} 

快捷

我定義了一個方便快捷重振睡覺的emacs:

bind -x '"\C-x\C-e":fg %emacs' 

Emacs-服務器

所以這就是我用了很長時間克,並不完美。我不能啓動一個正常的emacs,然後我的功能,除非我使用emacs服務器:http://wikemacs.org/index.php/Emacs_server

只需創建一個emacsclient -t的別名。

和外殼模式

但現在,我更喜歡使用Emacs中的終端(它是如此的得心應手圍繞外殼的緩衝移動,複製粘貼不用鼠標,尋找一個字符串,轉到輸出的開頭,用dired操作文件,...)。

1

好主意!

我剛剛更新了我的.bashrc:

edit_file_in_emacs_console() { 
    emacsclient -t [email protected] || emacs -q -nw [email protected] 
} 

if [ "$PS1" ]; then 
    alias emacs=edit_file_in_emacs_console 
fi 

於是我就用當前Emacs的服務器(如果可用),或(-q)來快速啓動一個簡單的emacs控制檯。