視覺與編輯——有什麼區別?
我通常將環境變數
VISUAL
和EDITOR
環境變數都設置為相同的東西,但有什麼區別?為什麼我會以不同的方式設置它們?在開發應用程序時,我為什麼要選擇先看,VISUAL
反之亦然EDITOR
?
EDITOR
編輯器應該能夠在不使用“高級”終端功能(如 old或ed
modeex
ofvi
)的情況下工作。它用於電傳終端。編輯器
VISUAL
可以是全屏編輯器,如vi
或emacs
。例如,如果您通過 bash 呼叫編輯器(使用
C-x C-e
),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 或 emacs)與終端編輯器(例如 vi/vim 或帶有 -nw 選項的 emacs)可能是可以的,但可能有很多遺留原因可能會獲勝沒有像希望的那樣工作。