如何在Ubuntu/Mint上设置Emacs打开新文件时在当前实例中打开?

17
我希望大部分时间都保持emacs打开状态,每次从nautilus/finder打开文本文件、python文件等时,它都能够在当前的emacs实例中作为一个新的缓冲区打开,而不是启动一个新的实例。
我尝试按照这篇指南的步骤操作:guide
我不太确定该怎么处理这个文件,但我尝试将其复制到/usr/bin/emacs_openfile,将#!/bin/sh添加到第一行,并运行chmod +x emacs_openfile。然而,它对我来说并没有起作用,只是打开了一个新的实例,尽管我能够将文本文件与此程序关联起来。
顺便说一下,我使用这个方法将emacs设置为默认编辑器。

https://gist.github.com/Bad-ptr/e05fb8d02436214abd89 - Bad_ptr
3个回答

20

您需要Emacs客户端

基本上,将emacsclient设置为您的默认编辑器,并在您的emacs配置中的某个位置添加(server-start)

emacsclient需要一个正在运行的Emacs实例才能工作,但如果这很麻烦,可以在登录时启动一个无头Emacs


我如何在登录时启动无头emacs? - tobeannounced
https://dev59.com/f1LTa4cB1Zd3GeqPc7Qi - tobeannounced
没错 :) 我在我的回答中添加了那个链接。 - Damien Pollet
4
我在我的 .bashrc 文件中保留的一个函数是 e() { nohup emacsclient --alternate-editor="emacs" "$@" > /dev/null 2>&1 & },它允许你从终端向 Emacs "扔"文件,而不需要通过发出 e file 命令来激活任何前台进程。 - metakermit
我启动emacs没有问题。但是有一件事情让我困扰,就是当我使用emacsclient作为外部编辑器打开文件时,emacsclient窗口总是先显示它的消息,并且会弹出多次。所以我用多个emacs客户端窗口来代替多个emacs实例窗口 :/ - xetra11

3

你是否在emacs中启动了服务器?请确保你将(server-start)添加到你的.emacs文件中或在现有的EMACS会话中执行M-x server-start

从概念上讲,这很容易,只需在命令行或程序命名处执行emacsclient文件名即可。


1

仅供参考,如果您在Mac上使用GUI版本,emacsclient目录如下:

/Applications/Emacs.app/Contents/MacOS/bin/emacsclient

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接