编辑:未找到附属程序“emacs -nw”

编辑:未找到附属程序“emacs -nw”

我已经设置了

$ echo $EDITOR
emacs -nw

我想知道为什么在这里找不到它,我该如何解决这个问题?谢谢。

$ sdiff -o sdiff.out f1 f2
1 2 3                                 | 2 3 4
%e1
sdiff: subsidiary program 'emacs -nw' not found

我不知道为什么其中的一个选项$EDITOR会出现问题,以及sdiff源代码中哪里需要它?我想就在这里http://git.savannah.gnu.org/cgit/diffutils.git/tree/src/sdiff.c#n459

prog = getenv ("EDITOR");
if (prog)
  editor_program = prog;

和这里http://git.savannah.gnu.org/cgit/diffutils.git/tree/src/sdiff.c#n1035

execvp (editor_program, (char **) argv);

或者http://git.savannah.gnu.org/cgit/diffutils.git/tree/src/sdiff.c#n1018http://git.savannah.gnu.org/cgit/diffutils.git/tree/src/sdiff.c#n1024。我不确定该程序在做什么。

作为比较,以下内容工作得很好:

$ eval "$EDITOR"

答案1

很明显,sdiff试图执行一个名为 的程序emacs -nw,但该程序并不存在。您的意图是使用一个选项sdiff进行调用,后跟文件。emacs-nw

该行为通过查看来确认sdiff 源代码,其中sdiff将首选编辑器直接填充到 argv[0] 中,它将<space><dash>nwemacs.您还可以通过设置并观察它是否打开 emacs 来确认它sdiff是否正常工作。EDITOR=emacs

如果您在打开 emacs 时需要该选项,那么我的建议是创建一个包装脚本:

$ cat emacs.sh
#!/bin/sh

vi "$@"

当然,只是开玩笑。你会使用:

$ cat emacs.sh
#!/bin/sh

emacs -nw "$@"

...然后设置EDITOR=/path/to/that/emacs.sh

相关内容