前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Emacs Server 启动方式探讨

Emacs Server 启动方式探讨

作者头像
飞驰的西瓜
发布2022-07-26 16:51:26
8670
发布2022-07-26 16:51:26
举报
文章被收录于专栏:EmacsTalk

在 Unix-like 的操作系统中,可以通过设置 EDITOR 环境变量来配置命令行工具(比如 git commit)默认的文本编辑器,比如:

代码语言:javascript
复制
export EDITOR=vim
# or
export EDITOR=emacs

通过这种方式,每一次都会新创建一个编辑器实例,对于 Vim 这种轻量级的编辑器还好,但对于 Emacs 这种十八般武艺样样精通的瑞士军刀来说就有些重了,理想状态是把 Emacs 作为一个类似浏览器的常驻进程,需要的时候 new 一个 frame/window 就好了,这时就用到了 Emacs Server 模式。

顾名思义,Server 模式只需要启动一次,后续使用时通过 emacsclient 进行连接即可。一般来说,在配置文件中添加如下命令即可:

代码语言:javascript
复制
(unless (server-running-p)
 (server-start))

或者可以通过在命令行执行 emacs --daemon ,它会在加载完用户配置后,自动调用 server-start ,区别于前者,这种方式重复调用时会报错:

代码语言:javascript
复制
Starting Emacs daemon.
Unable to start the daemon.
Another instance of Emacs is running the server, either as daemon or interactively.
You can use emacsclient to connect to that Emacs process.
Error: server did not start correctly

笔者经过一番探索,发现其实可以直接通过 emacsclient 来直接启动 server 模式,命令如下:

代码语言:javascript
复制
emacsclient -a "" -c -n "$@"
  • -a 是 alternate-editor 的简写,意思是在连接 server 失败时的替代编辑器,当为空值时,会自动执行 emacs --daemon ,然后再去连接。这样就解决了完美解决了重复调用 daemon 时的错误,而且也能在第一次调用时启动 server 模式
  • -c 表示新创建一个 frame,而不是复用已有的
  • -n 表示执行完该命令后,立刻退出,不用等待 server 返回。这也非常重要,否则终端就不会立刻返回了。

通过把上面的命令做成 alias(比如 e ),可以很方便的在命令行调用,比如 e ~/.bashrc ,比 vim 还方便。

参考

  • VISUAL vs. EDITOR variable – what is the difference? - Linux Bash Shell Scripting Tutorial Wiki
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-05-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 EmacsTalk 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 参考
相关产品与服务
命令行工具
腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档