问题
如何指定用emacsclient加载的用户的emacs init文件?
emacsclient不理解'-u user'和'-a ALTERNATE-EDITOR'不允许我引用它并提供'-u user'。
例如,运行:
/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和emacsclient版本23.1。
emacs本身支持'-u user'来加载指定用户的init文件。
我在别名文件中使用以下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后跟文件列表:
当我以自己的身份登录时,此功能非常有用。但是,许多生产箱要求我以生产用户身份登录。我已经将别名分成了一个bash脚本,因此我只需运行即可获得别名和bash函数。
. ~<username>/alias.sh
不幸的是,这不会让我使用我的.emacs文件(〜&lt; username&gt; /。emacs):(
这个问题一直让我发疯。
答案 0 :(得分:3)
如果您不能在备用编辑器规范中包含命令行参数,那么只需编写一个shell脚本为您执行此操作,并将其作为备用编辑器参数提供。
#!/bin/sh
emacs -u (username) "$@"
答案 1 :(得分:1)
服务器/客户端模型的要点是您有一个现有的Emacs,它有自己的一组配置,然后您通过一个或多个客户端进行连接。
如果服务器已经配置为显示菜单栏(全局设置),并且客户端说不显示它,客户应该怎么做?如果另一个客户说要显示它会怎么样?
如果您想为Emacs使用不同的设置,请使用不同的emacs会话。