編集:衛星プログラム「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オプションの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こともできます。sdiffEDITOR=emacs

Emacsを開くときにそのオプションが必要な場合は、ラッパースクリプトを作成することをお勧めします。

$ cat emacs.sh
#!/bin/sh

vi "$@"

もちろん、冗談です。以下を使用します。

$ cat emacs.sh
#!/bin/sh

emacs -nw "$@"

...その後、設定EDITOR=/path/to/that/emacs.sh

関連情報