web-dev-qa-db-ja.com

ビジュアルvs.エディター–違いは何ですか?

通常、VISUALEDITORの両方の環境変数を同じものに設定しますが、違いは何ですか?なぜ違う設定にするのですか?アプリを開発するとき、なぜVISUALの前にEDITORを、またはその逆を選択する必要があるのですか?

196
xenoterracide

EDITORエディタは、「高度な」端末機能(edの古いexまたはviモードなど)を使用せずに機能する必要があります。テレタイプ端末で使用されていました。

VISUALエディターは、viまたはemacsのような全画面エディターにすることができます。

例えば。 (C-x C-eを使用して)bashを介してエディターを呼び出すと、bashは最初にVISUALエディターを試行し、次にVISUALが失敗すると(端末が全画面エディターをサポートしていないため) 、EDITORを試します。

現在、EDITORを未設定のままにするか、vi -eに設定できます。

157
andcoz

受け入れられた答えはおそらく良い、短い扱いですが、これはVISUALとEDITORの違いがまだ重要である可能性がある場合に深く掘り下げる試みになります( Adam Katzの答え に基づいて構築)。

POSIX仕様では、ビジュアルモードエディターとラインエディターがまだ区別されています。これは、シリアル接続を介したカーソルの配置が(特にシリアル接続の速度が原因で)困難であった時代には、本当に重要でした。 viに関するWikipediaの記事 は、vi(ビジュアルモードエディター)とex(ラインエディター)の違いに関する有用な背景情報を提供します。調査を十分に掘り下げると、 "ex"仕様の "RATIONALE"セクション が見つかります。これは、仕様にまだ区別されている理由を示しています。

Viの一部は、不可能ではないにしても、ブロックモードの端末、またはカーソルアドレッシングの形式のない端末に十分に実装することが難しいため、そのような機能がすべての端末で機能することは必須要件ではありません。 。ただし、viの実装では、それらをサポートできるすべての端末で機能の完全なセットを提供する必要があります。

300ボーモデムをあきらめたので、これは必要ありませんでしたが、低速のシリアル回線を使用して組み込みシステムに接続する人(および/または本当に危険な接続)かもしれないと想像できますそれでも、viのような「ビジュアル」エディターとは異なる優先ラインモードエディターを使用できることに感謝します。損失のある、遅れた狭い接続を介したVT100スタイルの端末コードは、限られたアプリケーションでは「肥大化」する可能性があります。

私たちの残りにとって、「正しい」答えは「両方をあなたの好みのエディタに設定すること」であるように思われます。ローカル/グラフィカルエディター(Sublimeやgvimなど)とターミナルウィンドウエディター(viやemacsなど)でこの違いを採用しても問題ないかもしれませんが、おそらく期待どおりに機能しないレガシーな理由が山ほどあります。 。

37
robla

$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は、編集内容に基づいて動作することを期待するプログラムでは機能しません。これには間違いなくsudoeditorSudo -e)が含まれます。

Vimへのパスに空白がある場合、これは壊れる可能性があります。問題がある場合は、適切にインストールするか、/usr/local/bin/gvimなどのシンボリックリンクを検討してください。

3
Adam Katz

一部のツールはEDITORのみを受け入れます。たとえば、シェルの組み込みfc

-e ENAME  select which editor to use.  Default is FCEDIT, then EDITOR, then vi
2
Steven Penny

Viなどが失敗するような環境はないようなので、VISUALをX DISPLAYを必要とするものに設定し、EDITORをexに設定することにしました。

ほとんどの場合、一部のプログラムがVISUALを使用していない場合に問題が発生するようです。

0