3

我最近开始使用 Emacs 作为我的主要编辑器。有一件事情困扰着我:当我在我的 shell 中启动 Emacs 时,它会在一个新窗口中启动 Emacs。如果它被 shell 调用,我希望它在 shell 中启动,当它从工作区调用时,我希望它在新窗口中启动。

这可以通过我错过的一些配置来实现,还是任何一种 lisp?

我将 Manjaro 与 Xfce 和 fish-shell 一起使用(http://fishshell.com/

问候, 罗宾

4

2 回答 2

4

所以有别名解决方案,但我遇到的一个问题是我有时用 Ctrl-z 让 emacs 进入睡眠状态,然后我忘记了我启动了一个 emacs 会话,所以我再次使用我的别名,最终在终端中有两个 emacs,这让我很恼火。所以我使用一个函数来检查 emacs 是否已经在运行:

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

捷径

我定义了一个方便的快捷方式来恢复休眠的 emacs:

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

Emacs 服务器

所以这就是我用了很长时间的东西,它并不完美。除非我使用 emacs 服务器,否则我无法启动普通的 emacs,然后启动我的功能:http ://wikemacs.org/index.php/Emacs_server

只需为 emacsclient -t 创建一个别名。

和外壳模式

但是现在,我更喜欢在 emacs 中使用终端(在 shell 的缓冲区中移动、不使用鼠标进行复制粘贴、查找字符串、转到输出的开头、操作文件非常方便与dired,...)。

于 2013-08-23T15:53:49.427 回答
1

好主意 !

我刚刚更新了我的 .bashrc :

edit_file_in_emacs_console() {
    emacsclient -t $@ || emacs -q -nw $@
}

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

因此,如果可用,我会使用当前的 emacs 服务器,或者使用简单的 emacs 控制台 (-q) 来加快启动速度。

于 2013-08-30T15:22:13.833 回答