EmacsWiki: Emacs Client
以 Windows 系统为例
- 将 emacs 环境 添加到终端
- 利用终端
emacs --daemon
命令 开启 守护进程 在后台,它会把你的配置完全加载
- 找到 emacs bin 安装目录 下的
emacsclientw.exe
- 将想要打开的文件类型更换为默认使用
emacsclientw.exe
打开
- 这样就会当你使用
emacsclientw.exe
打开任何文件时都会跳转到 同一个窗口 ,不会多开窗口
- 请享受
一些技巧:
- 当你使用此方法打开一个文件时,关闭当前窗口时就相当于关闭此 buffer
- 如果在同一个窗口打开多个文件buffer时, 关闭窗口时会只关掉最后你打开的buffer,其它buffer不关闭
- 默认自动分配 file buffer mode group
- 不过好像打开 中文名文件 时 buffer name 乱码,导致无法正确打开 中文名文件
今天才发现这个功能
真的非常非常好用,秒启动就是牛,特别是解决 Windows 系统启动慢的缺点
1 个赞
之前(大概一年前)我发现 Doom Emacs 的 daemon 启动会导致字体设置有问题。自那以来我配置的方向就都是如何减少包、延迟加载包以节约加载时间了。。。
1 个赞
Emacs 确实是在Linux才有最好的体验,因为其它原因还是用回Windows了
rua
5
我在 10 代 i5 上启动时间只要 0.2 s,基本上是秒启动
emacsclient 坑非常多,不到必不得已真是不想用
2 个赞
emacsclient 还是有些限制的,我这边光标颜色就和 GUI 的时候不一致。
要用的爽还是直接用 GUI,反正启动一次,也不怎么关闭。
而且经过懒加载优化,Linux 和 macOS 都能控制在 1s 以内启动。 同样配置,在 Windows 系统 3s 左右,具体跟机器性能有关。
emacs-client确实有许多坑,我觉得Windows下可以不用关闭emacs,开着就开着吧反正资源占用很少。
目前Windows的emacs启动时间如下:
用了use-package延迟加载包,当然也用了第三方编译的emacs29(with native-comp with AOT)
加载速度和我用wsl1里的emacs -nw差不多,不过wsl1里面的emacs还加载了desktop,windows下如果保存desktop加载时间会变得很长很长。
我因为terminal下面工作比较多,以前打开一个emacs 就不关了,需要shell的时候用的 emacs下的eshell,asci-term 什么的。用了一段时间还是有点别扭。还是不如terminal 好用。
现在就启动一个emacs daemon 放在后台,cd 什么的还是在 terminal,用emacsclient 打开文件,有点像vim user 那样, terminal 下用screen/rg/fd/bat 之类的工具也挺方便的。
当然我也会留个emacsclient 不关,里面主要是project的coding
补充:我是在linux下
1 个赞
lynnux
13
是需要deamon里(server-start),然后其它程序通过emacsclientw -n打开文件那个?
我一直在用,还写个了lua程序自动调用emacsclientw,lua脚本在这里:.emacs.d/emacs-win32-launcher.lua at master · lynnux/.emacs.d · GitHub lua编译好的程序可以在Releases · lynnux/.emacs.d · GitHub 这里下载解压,里面有个emacs-win32-launcher.exe(目前还没有开源)。
使用方法:将emacs-win32-launcher.lua和emacs-win32-launcher.exe放在一起,修改emacs-win32-launcher.lua里的系统判断条件和exe路径。所有需要运行emacs的地方运行emacs-win32-launcher.exe就可以了,支持参数传递。emacs-win32-launcher.exe自带注册功能--install
参数给系统添加右键菜单,--uninstall
卸载,--debug
显示当前系统用于修改emacs-win32-launcher.lua里的系统判断参数(主要目的是可以在多个机子上用,每添加个机子添加判断条件就可以了)。这个方法最早来源于stackoverflow上的vbs启动脚本,写个exe方便点。
PS: emacsclientw我一直没感觉有问题啊,上面说company最近更新新版有图标了好像有时候显示挫位是有点问题,我已经换corfu了。
4 个赞
xml123
14
原来client模式下还会有额外的bug吗?我用了很久倒是没发现什么问题,不过我用的插件比较少。
用emacs --daemon启动后,再用emacsclient打开文件,发现字体和doom theme都没设置上。
如果是正常gui启动emacs,再用emacsclient打开文件是没问题的。
1 个赞
这个字体应该是 MS 专门为Terminal 开发的字体 Cascadia Mono,安装了 Terminal 的话,自带这个字体,不需要单独安装。
这个字体在 Windows Terminal 下的表现真的很好,有不同版本可供选择,而且还有支持 powerline