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


182

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

回答:


145

EDITORエディタは、(旧ような「高度な」、端末の機能を使用せずに動作することができる必要がありますedexのモードvi)。テレタイプ端末で使用されました。

VISUALエディタは、としてフルスクリーンエディタことができviたりemacs

たとえばC-x C-e、bashを使用して(bashを使用して)エディターを呼び出す場合、bashは最初のVISUALエディターを試行し、次にVISUAL失敗した場合(ターミナルがフルスクリーンエディターをサポートしていないため)、を試行しEDITORます。

現在、EDITOR未設定のままにするか、に設定することができますvi -e


9
ほとんどのアプリケーション$VISUALは、(シェル引用符で囲まれた)ファイル名を追加するシェルスニペットとして扱いますが、一部のアプリケーションは、検索する場合としない場合がある実行可能ファイルの名前として扱い$PATHます。したがって、実行可能ファイル(オプションなどが必要な場合はラッパースクリプトになります)へのフルパスを設定VISUAL(およびEDITOR)するのが最善です。
ジル

4
現代ではed、似たようなものはあまり人気がないので、単に無視VISUALして使用しても構いませんEDITOR
パベルシメルダ14年

13
C-x C-ebash についてのヒントをありがとう。とても便利な。
mndrix

5
@PavelŠimerda、EDITORたとえばgitUbuntu 12.04の場合、設定だけでは不十分です。VISUAL設定せずにgit無視EDITORして使用するだけnanoです(デフォルトでコンパイルされていると思います)。
maxschlepzig

5
@PavelŠimerda意味はありませんが、慣例です。EDITORは、以前はのような命令ベースのエディター用でしたed。GUIを備えたエディターが登場したとき、つまりGUIによって、デスクトップ環境のGUIではなく、CLI GUI(vim、emacsなど)が意味するようになりました。編集プロセスが劇的に変化したため、別の変数の必要性が生じました。このコンテキストでは、CLI GUIとデスクトップ環境のGUIエディターはほぼ同じであるため、VISUALを次のいずれかに設定できます。ただし、EDITORは根本的に異なるワークフローを対象としています。もちろん、これはすべて歴史的なものです。最近、edを使用している人はいません。
ゼネクサー

32

受け入れられた答えはおそらく良い、短い治療ですが、これは、VISUALとEDITORの区別がまだ重要であるかもしれないときに、より深くしようとする試みです(Adam Katzの答えに基づいて構築)。

POSIX仕様では、引き続きビジュアルモードエディターとラインエディターが区別されています。これは、シリアル接続を介したカーソルの位置決めが困難だった時代に特に重要でした(特にシリアル接続の速度のため)。viのためのWikipediaの記事は、 VI(ビジュアル・モード・エディタ)とEX(行エディタ)の区別についていくつかの有用な背景を提供します。調査をさらに深く掘り下げると、「ex」仕様の「RATIONALE」セクションが見つかります。これは、仕様にまだ区別がある理由を示しています。

viの一部は、ブロックモード端末、または任意の形式のカーソルアドレス指定のない端末で満足に実装することは不可能ではないにしても困難であると認識されているため、このような機能がすべての端末で機能することは必須要件ではありません。ただし、viの実装では、それらをサポートできるすべての端末ですべての機能を提供する必要があります。

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

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


2

シェル組み込みコマンドfcなど、一部のツールはEDITORのみを受け入れます。

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

1

私はそれ$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


使用$VISUALするかどうかは、使用可能なウィンドウシステムがあるかどうかではなく、カーソルを配置できる端末があるかどうかによって決まります。
ラドンロズバラ

ああ、素晴らしい!そのための明確な参照リンクを提供できますか?私もチェックしているので、私のコードはまだ安全だと思いますが、$DISPLAY知っておくと良いでしょう。
アダム・カッツ

気にしないで、ロブラの答えにはそのような参照が存在するようです。
アダム・カッツ

0

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.