问题
如何指定一个用户的emacs init文件以在emacsclient中加载?
emacsclient不理解“-u 用户”选项,“-a ALTERNATE-EDITOR”也不能使用引号来提供“-u 用户”选项。
例如,运行:
/usr/bin/emacsclient -n -a '/usr/bin/emacs -u <username>' ~<username>/notes.txt
返回值
/usr/bin/emacsclient: error executing alternate editor "/usr/bin/emacs -u <username>"
背景
我正在使用 Emacs 版本 23.1.1 和 Emacs 客户端版本 23.1。
Emacs 自身支持“-u 用户名”来加载指定用户的初始化文件。
我在别名文件中使用以下 Bash 函数来调用 Emacs。
# a wrapper is needed to sandwich multiple command line arguments in bash
# 2>/dev/null hides
# "emacsclient: can't find socket; have you started the server?"
emacs_wrapper () {
if [ 0 -eq $# ]
then
/usr/bin/emacsclient -n -a /usr/bin/emacs ~<username>/notes.txt 2>/dev/null &
else
/usr/bin/emacsclient -n -a /usr/bin/emacs $* 2>/dev/null &
fi
}
alias x='emacs_wrapper'
输入 x 加上一个文件列表:
- 如果已有emacs服务器正在运行,则连接到该服务器,否则启动一个新的服务器
- 以后台进程方式执行
- 如果没有提供文件,则打开文件列表或我的笔记文件
当我以本人身份登录时,这个方法非常好用。但是,在许多生产环境中,我需要以生产用户的身份登录。因此,我将我的别名分离成了一个bash脚本,只需运行它即可获取我的别名和bash函数。
. ~<username>/alias.sh
很不幸,这不能让我使用我的.emacs文件(~<username>/.emacs):(
这个问题一直困扰着我。