换句话说,我可以启动 emacs 一次吗,每当我在终端中输入 emacs 时,是否将它作为缓冲区打开我现有的 emacs 实例?
[rant]这又是一个很简单的功能,默认情况下在许多其他编辑器上启用,但在 Emacs 中被证明是相当困难的。[/rant]
无论如何,这就是我如何做到的。首先,正如 jwernerny 提到的,EmacsClient可以解决问题。编辑 foo.txt 所需要做的就是
emacsclient --alternate-editor='' foo.txt
Run Code Online (Sandbox Code Playgroud)
此命令将尝试连接到正在运行的 Emacs 服务器。如果没有服务器,它将启动一个。然后它将连接到服务器并指示它打开指定的文件。
服务器作为守护进程(后台进程)运行。如果您运行,ps x | grep emacs您将看到一个带有命令行的进程emacs --daemon。我遇到的问题是,如果你这样做,Emacs 只能在终端中运行,所以如果你想在图形窗口中运行它,请继续阅读......(并首先杀死该守护进程)
这是我添加到我的 .bashrc 中的内容:
alias e='emacsclient --no-wait --alternate-editor ~/.emacs.d/start.sh'
Run Code Online (Sandbox Code Playgroud)
和内容~/.emacs.d/start.sh是:
#!/bin/sh
emacs --eval '(server-start)' $* &
Run Code Online (Sandbox Code Playgroud)
所述e然后别名可以被使用,或者通过启动一个新的Emacs实例(与服务器)打开一个文件,或使用现有的一个。
对于等待您完成文件的编辑器命令(适用于 Git 提交等),请删除该--no-wait选项。我在我的 .bashrc 中这样做:
export EDITOR='emacsclient --alternate-editor ~/.emacs.d/start.sh'
Run Code Online (Sandbox Code Playgroud)
使用C-x #当你完成编辑的文件。老好人C-x k会问这个恼人的问题“Buffer foo.txt 仍然有客户端;杀死它?”
| 归档时间: |
|
| 查看次数: |
560 次 |
| 最近记录: |