我最近开始使用Emacs作为我的主编辑。有一件事困扰着我: 当我在shell中启动Emacs时,它会在新窗口中启动Emacs。我希望它在shell中启动,如果它被shell调用,并且在从工作区调用它时在新窗口中启动。
这可以通过我想念的某些配置来实现,还是任何类型的lisp?
我正在使用Manjaro和Xfce以及fish-shell(http://fishshell.com/)
此致 罗宾
答案 0 :(得分:4)
所以有别名解决方案,但我遇到的一个问题是我有时会让emacs与Ctrl-z一起睡觉,然后我忘了我已经启动了一个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创建一个别名。
和shell-mode
但是现在,我更喜欢在emacs中使用终端(在shell的缓冲区中移动,在没有鼠标的情况下复制粘贴,查找字符串,转到输出的开头,这样很方便)使用dired操纵文件,...)。
答案 1 :(得分: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)来加快启动速度。