2

在 emacsclient 文档中,一个示例 EDITOR 设置是:

EDITOR="emacsclient --alternate-editor emacs +%d %s"

如何使用 %d 和 %s?我知道 + 从指定的行开始, %s 是要编辑的文件名,但是什么程序替换了 %d 和 %s 的值?

例如,如果 subversion 试图踢出$EDITOR,emacs 将编辑 3 个文件:+%d%s和目标文件。是否有任何程序将这些 %d 和 %s 替换为接下来的两个参数?emacs 文档不正确吗?你为什么不直接EDITOR设置`emacsclient --alternate-editor emacs

4

1 回答 1

2

该语法模仿 C 和受其启发的语言中的 printf 函数使用的语法:%d旨在被十进制表示法中的整数替换,并%s旨在被字符串替换。但是,我不知道有任何程序会对$EDITOR. 这很可能是 Emacs 手册中的一个错误。

有些程序解释$EDITOR为可执行文件的路径(有些甚至不查找$PATH),还有一些程序将其解释为启动编辑器的 shell 片段(允许以您的方式将额外的参数传递给可执行文件) . 因此,最安全的做法是设置EDITOR为可执行文件的完整路径,不包含特殊字符。如果您想传递选项,请使用中继脚本,例如EDITOR=~/bin/EDITOR,其中的内容~/bin/EDITOR类似于

#!/bin/sh
exec emacsclient --alternate-editor emacs
于 2010-10-29T21:52:43.973 回答