3

问题

如何指定用户的 emacs 初始化文件以使用 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 版和 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 后跟文件列表:

  • 如果一个正在运行,则连接到现有的 emacs 服务器,否则启动一个新的
  • 作为后台进程执行
  • 如果未提供文件,则打开文件列表或我的笔记文件

当我以自己的身份登录时,这非常有用。但是,许多生产框要求我以生产用户身份登录。我已经将我的别名分离到一个 bash 脚本中,因此我可以通过简单地运行来获得我的别名和 bash 函数。

. ~<username>/alias.sh

不幸的是,这不会让我使用我的 .emacs 文件 (~<username>/.emacs) :(

这个问题一直让我发疯。

4

2 回答 2

3

如果您不能在备用编辑器规范中包含命令行参数,那么只需编写一个为您执行此操作的 shell 脚本,并将其作为备用编辑器参数提供。

#!/bin/sh
emacs -u (username) "$@"
于 2011-04-12T21:10:22.227 回答
1

服务器/客户端模型的要点是您拥有一个现有的 Emacs 及其自己的一组配置,然后您通过一个或多个客户端进行连接。

如果服务器已经配置为显示菜单栏(全局设置),而客户端说不显示,客户端应该怎么做?如果另一个客户附上说要显示它怎么办?

如果要对 Emacs 使用不同的设置,请使用不同的 emacs 会话。

于 2011-04-12T22:06:05.183 回答