我最近开始使用 Emacs 作为我的主要编辑器。有一件事情困扰着我:当我在我的 shell 中启动 Emacs 时,它会在一个新窗口中启动 Emacs。如果它被 shell 调用,我希望它在 shell 中启动,当它从工作区调用时,我希望它在新窗口中启动。
这可以通过我错过的一些配置来实现,还是任何一种 lisp?
我将 Manjaro 与 Xfce 和 fish-shell 一起使用(http://fishshell.com/)
问候, 罗宾
我最近开始使用 Emacs 作为我的主要编辑器。有一件事情困扰着我:当我在我的 shell 中启动 Emacs 时,它会在一个新窗口中启动 Emacs。如果它被 shell 调用,我希望它在 shell 中启动,当它从工作区调用时,我希望它在新窗口中启动。
这可以通过我错过的一些配置来实现,还是任何一种 lisp?
我将 Manjaro 与 Xfce 和 fish-shell 一起使用(http://fishshell.com/)
问候, 罗宾
所以有别名解决方案,但我遇到的一个问题是我有时用 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,...)。
好主意 !
我刚刚更新了我的 .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) 来加快启动速度。