You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

usethis::use_vignette编辑器选择逻辑及emacsclient调用错误排查

解决usethis调用emacsclient失败的问题

问题场景

在R 4.4.1、usethis 3.0.0,Ubuntu 20.04环境下,从shell调用usethis::use_vignette("my-vignette")时出现以下错误:

> usethis::use_vignette("my-vignette")
✔ Setting active project to [omitted].
✔ Writing vignettes/my-vignette.Rmd.
☐ Modify vignettes/my-vignette.Rmd.
sh: 1: emacsclient -a emacs: not found
Warning message:
error in running command 

虽然emacsclient能在任意shell中通过emacsclient [filenamehere] &正常调用,但usethis未明确说明编辑器的配置方式。

解决方法

usethis依赖R的editor()函数调用编辑器,问题出在R的编辑器配置与shell环境不同步,可通过以下两种方式修复:

1. 通过R选项永久配置

编辑你的.Rprofile文件(通常在用户主目录~/.Rprofile,不存在则创建),添加以下内容:

# 直接使用命令,或替换为emacsclient的完整路径
options(editor = "emacsclient &")

若不确定emacsclient的完整路径,可在shell中运行which emacsclient获取,比如结果为/usr/bin/emacsclient,则配置改为:

options(editor = "/usr/bin/emacsclient &")

保存后重启R即可生效。

2. 通过shell环境变量配置

编辑shell的配置文件(比如.bashrc、.zshrc,根据你使用的shell选择),添加:

export EDITOR="emacsclient &"

同样可使用完整路径:

export EDITOR="/usr/bin/emacsclient &"

执行source ~/.bashrc(对应bash)或source ~/.zshrc(对应zsh)使配置生效,再重启R即可。

验证配置

重启R后,运行editor(),若能正常打开emacsclient,则配置成功。此时再调用usethis::use_vignette("my-vignette")将不会出现错误。

原因说明

R的编辑器配置独立于shell环境,即使shell能正常调用emacsclient,R可能因未继承正确的PATH或EDITOR变量而无法找到命令。明确指定编辑器命令或完整路径,可确保R能正确调用编辑器。

内容的提问来源于stack exchange,提问作者pglpm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 09:21:04