私は設定しました。
$ 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
オプションの1つに問題がある理由と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#n1018そしてhttp://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]に直接入力し、それを設定し、emacsが開いているかどうかを観察して動作することを確認<space><dash>nw
するemacs
こともできます。sdiff
EDITOR=emacs
Emacsを開くときにそのオプションが必要な場合は、ラッパースクリプトを作成することをお勧めします。
$ cat emacs.sh
#!/bin/sh
vi "$@"
もちろん、冗談です。以下を使用します。
$ cat emacs.sh
#!/bin/sh
emacs -nw "$@"
...その後、設定EDITOR=/path/to/that/emacs.sh