我在工作中使用 emacs,我通常使用两个不同的用户连接到系统:
myuser
commonuser
前者是我自己的个人用户,而后者是整个团队共享来管理一个应用程序。(不相关的提示:这是一个糟糕的主意。通常有更好的方法,尽管不太明显,管理权限。从我的经验中吸取教训)。
为了避免不幸的混淆,我想为每个用户定义一个单独的主题,并在各自的 init 文件中定义它。
init 文件中定义的所有其他内容都必须由两者共享。
我创建了一个单独的 init 文件,/path/to/init/file/.emacs
并.emacs
在每个用户的主目录中创建了以下文件:
(load-file "/path/to/init/file/.emacs")
(load-theme my-favorite-theme)
Run Code Online (Sandbox Code Playgroud)
这就像一个魅力。但是,当然,那太容易了!
有人问我,不修改.emacs
的文件commonuser
。我不会详细说明原因,但事实仍然是我必须找到解决方法。这是我到目前为止所得到的:
~myuser/.emacs
文件,无论用户如何,我都会加载它。为commonuser
这样定义了一个别名:
alias emacs='emacs -Q --load ~myuser/.emacs'
Run Code Online (Sandbox Code Playgroud)这将使 emacs 忽略commonuser
init 文件和 load myuser
。
现在我的(简单)问题是:
如何根据启动它的用户使 emacs 表现不同?
我正在做类似的事情:
if [[ $(whoami) == "myuser" ]]; then
(load-theme 'theme1)
if [[ $(whoami) == "commonuser" ]]; then
(load-theme 'theme2)
Run Code Online (Sandbox Code Playgroud)
Emacs 有描述当前主机名和用户名的变量。就像您为了有条件地根据 hostname 做某事而做的事情一样,您拥有变量user-login-name
(来自文档:“用户名,如果可能,取自环境变量。”)。
所以,我想这样的事情会适用:
(when (string-equal user-login-name "myuser")
(load-theme 'theme1))
(when (string-equal user-login-name "commonuser")
(load-theme 'theme2))
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
294 次 |
最近记录: |