通常、VISUAL
とEDITOR
の両方の環境変数を同じものに設定しますが、違いは何ですか?なぜ違う設定にするのですか?アプリを開発するとき、なぜVISUAL
の前にEDITOR
を、またはその逆を選択する必要があるのですか?
EDITOR
エディタは、「高度な」端末機能(ed
の古いex
またはvi
モードなど)を使用せずに機能する必要があります。テレタイプ端末で使用されていました。
VISUAL
エディターは、vi
またはemacs
のような全画面エディターにすることができます。
例えば。 (C-x C-e
を使用して)bashを介してエディターを呼び出すと、bashは最初にVISUAL
エディターを試行し、次にVISUAL
が失敗すると(端末が全画面エディターをサポートしていないため) 、EDITOR
を試します。
現在、EDITOR
を未設定のままにするか、vi -e
に設定できます。
受け入れられた答えはおそらく良い、短い扱いですが、これはVISUALとEDITORの違いがまだ重要である可能性がある場合に深く掘り下げる試みになります( Adam Katzの答え に基づいて構築)。
POSIX仕様では、ビジュアルモードエディターとラインエディターがまだ区別されています。これは、シリアル接続を介したカーソルの配置が(特にシリアル接続の速度が原因で)困難であった時代には、本当に重要でした。 viに関するWikipediaの記事 は、vi(ビジュアルモードエディター)とex(ラインエディター)の違いに関する有用な背景情報を提供します。調査を十分に掘り下げると、 "ex"仕様の "RATIONALE"セクション が見つかります。これは、仕様にまだ区別されている理由を示しています。
Viの一部は、不可能ではないにしても、ブロックモードの端末、またはカーソルアドレッシングの形式のない端末に十分に実装することが難しいため、そのような機能がすべての端末で機能することは必須要件ではありません。 。ただし、viの実装では、それらをサポートできるすべての端末で機能の完全なセットを提供する必要があります。
300ボーモデムをあきらめたので、これは必要ありませんでしたが、低速のシリアル回線を使用して組み込みシステムに接続する人(および/または本当に危険な接続)かもしれないと想像できますそれでも、viのような「ビジュアル」エディターとは異なる優先ラインモードエディターを使用できることに感謝します。損失のある、遅れた狭い接続を介したVT100スタイルの端末コードは、限られたアプリケーションでは「肥大化」する可能性があります。
私たちの残りにとって、「正しい」答えは「両方をあなたの好みのエディタに設定すること」であるように思われます。ローカル/グラフィカルエディター(Sublimeやgvimなど)とターミナルウィンドウエディター(viやemacsなど)でこの違いを採用しても問題ないかもしれませんが、おそらく期待どおりに機能しないレガシーな理由が山ほどあります。 。
$VISUAL
はグラフィカルであり、$EDITOR
はコマンドラインであると結論しました。未定義の場合、$VISUAL
を求めるものを探し、次に$EDITOR
を試してください。
(必要な引用:適切なドキュメンテーション、おそらくmanページまたはPOSIX仕様を入手したいですか?)
現時点では、~/.bashrc
と~/.zshrc
に次のようなものがあります。
EDITOR="$(command -v vim)"
# we have gvim, not in an SSH term, and the X11 display number is under 10
if command -v gvim >/dev/null 2>&1 \
&& [ "$SSH_TTY$DISPLAY" = "${DISPLAY#*:[1-9][0-9]}" ]; then
export VISUAL="$(command -v gvim) -f"
Sudo_EDITOR="$VISUAL"
else
Sudo_EDITOR="$EDITOR"
fi
gvim
なし-f
は、編集内容に基づいて動作することを期待するプログラムでは機能しません。これには間違いなくsudoeditor
(Sudo -e
)が含まれます。
Vimへのパスに空白がある場合、これは壊れる可能性があります。問題がある場合は、適切にインストールするか、/usr/local/bin/gvim
などのシンボリックリンクを検討してください。
一部のツールはEDITORのみを受け入れます。たとえば、シェルの組み込みfc:
-e ENAME select which editor to use. Default is FCEDIT, then EDITOR, then vi
Viなどが失敗するような環境はないようなので、VISUALをX DISPLAYを必要とするものに設定し、EDITORをexに設定することにしました。
ほとんどの場合、一部のプログラムがVISUALを使用していない場合に問題が発生するようです。