विजुअल बनाम EDITOR - क्या अंतर है?


182

मैं आम तौर पर VISUALऔर EDITORपर्यावरण चर दोनों को एक ही चीज़ पर सेट करता हूं , लेकिन क्या अंतर है? मैं उन्हें अलग तरह से क्यों सेट करूंगा? एप्लिकेशन विकसित करते समय, मुझे VISUALपहले EDITORया इसके विपरीत देखने का विकल्प क्यों चुनना चाहिए ?

जवाबों:


145

EDITORसंपादक (पुराने की तरह "उन्नत" टर्मिनल कार्यक्षमता के उपयोग के बिना काम करने के लिए सक्षम होना चाहिए edया exके मोड vi)। इसका उपयोग टेलेटाइप टर्मिनलों पर किया गया था।

एक VISUALसंपादक पूर्ण स्क्रीन संपादक के रूप में viया हो सकता है emacs

उदाहरण के लिए यदि आप बैश (उपयोग C-x C-e) के माध्यम से एक संपादक को आमंत्रित करते हैं , तो बैश पहले VISUALसंपादक की कोशिश करेगा और फिर, यदि VISUALविफल रहता है (क्योंकि टर्मिनल पूर्ण-स्क्रीन संपादक का समर्थन नहीं करता है), तो यह कोशिश करता है EDITOR

आजकल, आप EDITORपरेशान छोड़ सकते हैं या इसे सेट कर सकते हैं vi -e


9
अधिकांश अनुप्रयोग $VISUALएक शेल स्निपेट के रूप में व्यवहार करते हैं जो वे (शेल-उद्धृत) फ़ाइल नाम को जोड़ते हैं, लेकिन कुछ इसे एक निष्पादन योग्य के नाम के रूप में मानते हैं जो वे खोज कर सकते हैं या नहीं $PATH। इसलिए एक निष्पादन योग्य के लिए पूर्ण पथ पर VISUAL(और EDITOR) सेट करना सबसे अच्छा है ( यदि आप उदाहरण के लिए विकल्प चाहते हैं तो एक आवरण स्क्रिप्ट हो सकती है)।
गिल्स

4
आधुनिक समय में, edऔर इसी तरह बहुत लोकप्रिय नहीं हैं , इसलिए मेरा मानना ​​है कि केवल उपेक्षा VISUALऔर उपयोग करना ठीक है EDITOR
पावेल Paमरदा

13
C-x C-eबाश में टिप के लिए धन्यवाद । बेहद सुविधाजनक।
मॉन्ड्रिक्स

5
@ Pavel enoughimerda, उबंटू 12.04 पर EDITORउदाहरण के लिए बस सेटिंग पर्याप्त नहीं है git। बिना VISUALसेट किया जा रहा gitध्यान न दी EDITORऔर बस का उपयोग करता है nano(डिफ़ॉल्ट में संकलित, मुझे लगता है)।
मैक्सक्लेपजिग

5
@ Pavel butimerda इसका कोई मतलब नहीं है, लेकिन यह सम्मेलन है। EDITOR जैसे निर्देश-आधारित संपादकों के लिए हुआ करता था ed। जब GUI के साथ संपादकों के बारे में आया - और GUI द्वारा, मेरा मतलब है CLI GUI (vim, emacs, इत्यादि ।-- ncurses), डेस्कटॉप वातावरण GUI नहीं - संपादन प्रक्रिया नाटकीय रूप से बदल गई है, इसलिए दूसरे चर की आवश्यकता उत्पन्न हुई। इस संदर्भ में, सीएलआई जीयूआई और डेस्कटॉप वातावरण जीयूआई संपादक कमोबेश एक जैसे हैं, इसलिए आप या तो विज़ुअल सेट कर सकते हैं; हालाँकि, EDITOR एक मूल रूप से भिन्न वर्कफ़्लो के लिए है। बेशक, यह सब ऐतिहासिक है। कोई भी इन दिनों एड का उपयोग नहीं करता है।
ज़ेनेक्सर

32

स्वीकृत उत्तर संभवतः एक अच्छा, छोटा उपचार है, लेकिन यह तब और गहरा जाने का प्रयास होगा जब विसाल और एडिटोर के बीच का अंतर अभी भी मायने रखता है ( एडम काट्ज के उत्तर पर निर्माण )।

POSIX कल्पना अभी भी दृश्य मोड संपादकों और लाइन संपादकों के बीच अंतर करती है। यह वास्तव में उन दिनों में वापस आया जब सीरियल कनेक्शन पर कर्सर की स्थिति कठिन थी (विशेषकर सीरियल कनेक्शन की गति के कारण)। Vi के लिए विकिपीडिया लेख vi (एक दृश्य मोड संपादक) और पूर्व (एक लाइन संपादक) के बीच के अंतर पर कुछ उपयोगी पृष्ठभूमि देता है। यदि आप अनुसंधान को काफी गहराई से खोदते हैं, तो आपको "पूर्व" युक्ति का "राष्ट्रीय" खंड मिलेगा , जो इस बात का एक कारण बताता है कि अभी भी कल्पना में है:

यह माना जाता है कि vi के भाग कठिन होंगे, यदि असंभव नहीं है, तो ब्लॉक-मोड टर्मिनल पर संतोषजनक ढंग से लागू करने के लिए, या बिना किसी पते के कर्सर के बिना एक टर्मिनल, इस प्रकार यह अनिवार्य आवश्यकता नहीं है कि ऐसी सुविधाएँ सभी टर्मिनलों पर काम करें । हालांकि, यह मंशा है कि vi कार्यान्वयन सभी टर्मिनलों पर क्षमताओं का पूरा सेट प्रदान करना चाहिए जो उन्हें समर्थन देने में सक्षम हों।

मुझे अपने 300 बॉड मॉडम को छोड़ने के बाद से इसकी आवश्यकता नहीं है, लेकिन मैं कल्पना कर सकता हूं कि लोग जो एम्बेडेड सिस्टम (और / या वास्तव में पासा कनेक्शन) से कनेक्ट करने के लिए धीमी धारावाहिक लाइनों का उपयोग करते हैं, वे अभी भी पसंदीदा लाइन मोड के लिए सक्षम होने की सराहना कर सकते हैं एक "दृश्य" संपादक से अलग संपादक vi। VT100- शैली टर्मिनल कोड एक हानिपूर्ण, शिथिल, संकीर्ण कनेक्शन पर सीमित अनुप्रयोगों में "ब्लोट" हो सकता है।

हम में से बाकी लोगों के लिए, यह "सही" उत्तर लगता है "उन दोनों को अपना पसंदीदा संपादक बनाने के लिए सेट करें"। स्थानीय विंडो / आलेखीय संपादक (जैसे उदात्त या gvim) बनाम एक टर्मिनल विंडो संपादक (जैसे vi या emacs) के लिए इस अंतर का सह-चयन करना ठीक हो सकता है, लेकिन संभवतः विरासत कारणों का एक पहाड़ है, जो संभवतः आशा के अनुरूप काम नहीं करेगा। ।


2

कुछ उपकरण केवल EDITOR को स्वीकार करते हैं, उदाहरण के लिए शेल बिल्ट fc :

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

1

मैंने निष्कर्ष निकाला है कि $VISUALचित्रमय है और $EDITORकमांड लाइन है। तो अपरिभाषित, कुछ भी मांग $VISUAL करनी चाहिए तो कोशिश $EDITORअगले।

( उद्धरण की आवश्यकता है: मैं उचित प्रलेखन, शायद एक आदमी पृष्ठ या 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) शामिल हैं ।

यदि आपके पास चक्कर लगाने के लिए व्हॉट्सएप है तो यह टूट सकता है। यदि यह एक समस्या है, या तो इसे ठीक से स्थापित करें या फिर जैसे सहानुभूति पर विचार करें/usr/local/bin/gvim


चाहे उपयोग करने के लिए $VISUALनिर्भर करता है कि क्या आपके पास एक टर्मिनल है जो कर्सर पोजिशनिंग में सक्षम है, न कि आपके पास एक विंडो सिस्टम उपलब्ध है।
रेडॉन रोजबोरो

आह, महान! क्या आप उसके लिए एक निश्चित संदर्भ लिंक प्रदान कर सकते हैं? मुझे लगता है कि मेरा कोड अभी भी सुरक्षित है क्योंकि मैं भी जांच कर रहा हूं $DISPLAY, लेकिन यह जानना अच्छा है।
एडम काट्ज

कोई बात नहीं, ऐसा प्रतीत होता है कि लुटेरा के उत्तर में ऐसे संदर्भ मौजूद हैं , जिसमें मेरे उत्तर का भी उल्लेख है।
एडम काटज़

0

चूँकि कोई भी वातावरण ऐसा प्रतीत नहीं होता जहाँ vi या समान विफल हो जाएँ, मैंने VISUAL को किसी ऐसी चीज़ की स्थापना के लिए ले लिया है, जिसे एक्स एक्सपीएल और पूर्व की आवश्यकता है।

ज्यादातर, जब कुछ प्रोग्राम VISUAL का उपयोग नहीं करता है, तो बस मुझे परेशानी होती है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.