从shell启动时在shell中启动Emacs

从shell启动时在shell中启动Emacs,shell,emacs,fish,Shell,Emacs,Fish,我最近开始使用Emacs作为我的主编辑器。有一件事困扰着我: 当我在shell中启动Emacs时,它会在新窗口中启动Emacs。如果shell调用它,我希望它在shell中启动,如果从工作区调用它,则在新窗口中启动 这可以通过我错过的一些配置来实现吗,或者是任何类型的lisp 我将Manjaro与Xfce和fish shell()一起使用 问候,, Robin所以有了别名解决方案,但我遇到的一个问题是,有时我用Ctrl-z让emacs休眠,然后我忘记启动了emacs会话,所以我再次使用别名,结果

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

这可以通过我错过的一些配置来实现吗,或者是任何类型的lisp

我将Manjaro与Xfce和fish shell()一起使用

问候,,
Robin

所以有了别名解决方案,但我遇到的一个问题是,有时我用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服务器:

只需为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)来加快启动速度

你是说像
emacs-nw
?谢谢你jlahd,我不知道“emacs-nw”。有没有一种方法可以在shell中启动时使用-nw自动调用emacs?您可能应该在shell中为此创建一个别名,例如
别名em“emacs-nw”
。之后,在shell中说
em
将运行
emacs-nw