
通常、環境変数VISUAL
とEDITOR
環境変数を同じ値に設定しますが、違いは何ですか?なぜ異なる設定をする必要がありますか?アプリを開発するとき、なぜVISUAL
古いビューを選択するのですか?それともその逆を選ぶべきですかEDITOR
?
答え1
エディタは、以前やモードなどのEDITOR
「高度な」端末機能を使用せずに作業できる必要があります。テレタイプ端末に使用されます。ed
ex
vi
エディタは、VISUAL
またはなどのフルスクリーンエディタです。vi
emacs
たとえば、bash(using)を介してエディタを呼び出すと、C-x C-e
bashは最初のVISUAL
エディタを試してからVISUAL
失敗します(端末がフルスクリーンエディタをサポートしていないため)EDITOR
。
これでEDITOR
未設定のままにするか、またはに設定できますvi -e
。
答え2
受け入れられる答えは、おそらく優れた簡単な治療法です。しかし、これはVISUALとEDITORの違いが依然として重要な場合にもっと深く入ろうとする試みです(ビルベース)アダム勝の回答)。
POSIX仕様はまだビジュアルモードエディタとラインエディタを区別します。これは、シリアル接続でのカーソル位置決めが困難な場合(特にシリアル接続速度のため)、本当に重要です。これviに関するWikipediaの記事vi(ビジュアルモードエディタ)とex(ラインエディタ)の違いに関する有用な背景知識を提供します。研究を掘り下げてみるとわかります。「ex」仕様の「RATIONALE」部分、これはこれらの区別が仕様にまだ存在する理由を提供します。
viの一部は不可能ではありませんが、ブロックモードの端末や何らかの形のカーソルアドレッシングがなければ端末でうまく実装するのが難しいことを認識しているので、これらの機能はすべての端末で動作する必要があり、必須ではありません。ただし、vi実装は、それをサポートできるすべての端末で完全な機能セットを提供する必要があります。
300ボーモデムを放棄した後、これはもはや必要ありませんが、人々は遅いシリアルラインを使用して組み込みシステム(および/または非常に危険な接続)に接続することを想像できます。可能viなどの「ビジュアル」エディタとは異なる好みのラインモードエディタを使用することは依然として良いです。損失、遅延、狭い接続によるVT100タイプのターミナルコードは、限られたアプリケーションでは「肥大」する可能性があります。
私たちの残りの人にとって、「正しい」答えは「両方とも好みのエディタで設定する」ようです。グラフィックエディタ(Sublime、gvim、emacsなど)とターミナルエディタ(vi/vim、または-nwオプションを含むemacsなど)の違いはおそらく大丈夫でしょう。しかし、おそらく勝利できる多くのレガシーな理由があるでしょう。期待どおりに動作するようなものはありません。
答え3
$VISUAL
好むよりも有能でインタラクティブです$EDITOR
。定義されていない場合、すべてのナビゲーション$VISUAL
しなければならない$EDITOR
次に、次の手順を試してください。
$VISUAL
一部は、グラフィックターミナルとインタラクティブターミナルを表現するための現代的なルールを採用しています$EDITOR
。歴史的に$VISUAL
(例:肉)は対話型端末表示を表し$EDITOR
、編集する)は(テキスト)カーソルの移動を処理できない行エディタです。バラより ロブラの答えより多くの歴史的記録を学びましょう。
現在~/.bashrc
私と次の内容があります~/.zshrc
。
# Prefer vim or else fail over to vi
EDITOR="$(command -v vim 2>/dev/null || command -v vi)"
# 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
答え4
viなどが失敗する環境はないようで、VISUALをX DISPLAY、EDITORをexで要求することに設定しました。
ほとんどの場合、特定のプログラムがVISUALを使用していないと問題が発生するようです。