从shell启动时在shell中启动Emacs
我最近开始使用Emacs作为我的主编辑器。有一件事困扰着我: 当我在shell中启动Emacs时,它会在新窗口中启动Emacs。如果shell调用它,我希望它在shell中启动,如果从工作区调用它,则在新窗口中启动 这可以通过我错过的一些配置来实现吗,或者是任何类型的lisp 我将Manjaro与Xfce和fish shell()一起使用 问候,,从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会话,所以我再次使用别名,结果
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
。