वी बनाम विम, या, क्या कोई कारण है कि मैं कभी भी वीआई का उपयोग करना चाहता हूं?


84

मैं * NIX पाठ संपादक (वर्तमान से पलायन के बारे में थोड़ा पता nanoकरने के लिए vim), और, यूनिक्स और लिनक्स एसई पर थोड़ा चारों ओर देखने के बाद, देखा है कि viसवालों की एक उचित संख्या में 'vim' के स्थान पर प्रयोग किया जाता है। मुझे पता है कि 'वीआईएम' का मतलब 'वीआईएमप्रूव्ड' है, और इस बात को ध्यान में रखते हुए, मैं सोच रहा हूं कि क्यों कोई भी विम के बजाय वीआई का इस्तेमाल करेगा। क्या vi का विम पर कोई महत्वपूर्ण लाभ है?

संपादित करें: मुझे लगता है कि मेरे प्रश्न का गलत अर्थ निकाला जा रहा है। मुझे पता है कि विम सबसे अधिक भाग के लिए, अधिक शक्तिशाली और सुविधा पूर्ण है तो vi है। अगर मैं जानना चाहता हूं कि क्या ऐसे कोई संभावित मामले हैं जहां वीआई का विम पर फायदा है, जैसे कि कम मेमोरी का उपयोग, * निक्स सिस्टम पर प्रचलन आदि।


25
viआप के बारे में अच्छी बात यह है कि यह हर POSIX अनुरूप प्रणाली पर होने की उम्मीद कर सकते हैं।
जोर्डनम

1
असल में, उबंटू मानक इंस्टॉलेशन में शामिल है viऔर नहीं vim.. उबंटू सबसे उपयोगकर्ता के अनुकूल डिस्ट्रो btw में से एक है ;-)
amyassin

10
@amyassin यह गलत है, उबंटू, अधिकांश लिनक्स वितरणों की तरह, इसमें शामिल है vimviबस एक प्रतीकात्मक लिंक है जो अंततः vimडिफ़ॉल्ट स्थापना में इंगित करता है।
jlliagre

2
मेरी सलाह है: विम का उपयोग करें, लेकिन POSIX विनिर्देशों के लिएvi उपयोग करना सीखें । इस तरह आपके पास पोर्टेबल ज्ञान के साथ-साथ विम एक्सटेंशन जानना भी है। vi
वाइल्डकार्ड

1
@DDK आप अपने बयान में "अंततः" से चूक गए। "ls -l / etc / alternatives / vi" -> "lrwxrwxrwx 1 root 17 janv। 1 2016 / etc / alternatives / vi ->
/usr/bin/vim.tiny

जवाबों:


61

viPOSIX मानक संपादक है (भी) । बहुत सारे कार्यान्वयन हैं और vimकम से कम लिनक्स पर सबसे लोकप्रिय होने की संभावना है।

हालांकि कई पारंपरिक यूनिक्स अनुरूप ओएस viमानक के बहुत करीब कार्यान्वयन प्रदान करते हैं , vimइसमें कई अतिरिक्त विशेषताएं हैं जो इसे दोधारी तलवार बनाते हैं।

बेशक, ये एक्सटेंशन आमतौर पर संपादन प्रक्रिया को आसान बनाने और उपयोगी सुविधाओं और कार्यक्षमता प्रदान करने के लिए डिज़ाइन किए गए हैं। हालाँकि, एक बार जब आप उनमें से कुछ के लिए अभ्यस्त हो जाते हैं (कॉस्मेटिक वाले नहीं जैसे कि सिंटेक्स कलरिंग, लेकिन जो संपादक के व्यवहार को बदलते हैं) तो आप आसानी से भूल सकते हैं कि वे विशिष्ट हैं; और मूल बीएसडी कोड के आधार पर एक अलग कार्यान्वयन का उपयोग करके, बहुत निराशा हो सकती है। उल्टा भी सही है।

यह काफी मुद्दा यह है कि गैर POSIX की तरह अधिक रूढ़िवादी खोल कार्यान्वयन करने के लिए का सामना करना पड़ा bashisms का उपयोग कर स्क्रिप्ट के साथ होता है के समान है dashया ksh


29

नहीं vi के पास कोई अन्य महत्वपूर्ण लाभ नहीं है, बल्कि इसके दूसरे तरीके के आसपास। विम के फायदे हैं तो वीआई के। आप में रुचि हो सकती है: क्यों, ओह, क्यों उन #? @! Nutheads vi का उपयोग करें?

संपादित करें यह भी पढ़ें: क्या VIM सीखने लायक है?


4
हां। मैं किसी भी आईडीई का उपयोग नहीं करता क्योंकि संपादकों वे आपको सिर्फ विम का उपयोग करने के लिए मजबूर नहीं करते हैं।
कीथ

1
@ के साथ मैं Xcode और ग्रहण दोनों का उपयोग करता हूं और मैं अभी भी केवल vi के साथ संपादन करने में सक्षम हूं।
ott--

@ कीथ स्लिकएडिट में एक महान विम अनुकरण है, और आईडीईए इसके करीब आ रहा है। इसके अलावा, विजुअल स्टूडियो में ViEmu है।
डेन्कोरियो

1
IntellIJ में मानक संपादक के व्यवहार को समझने के लिए एक अच्छा vim प्लगइन भी है।
जुलिएनड

24

अपने जीवन का एक बड़ा हिस्सा (बचपन सहित नहीं) बिताने के बाद, विम के साथ आराम से संपादन करते हुए, मैंने लगभग एक महीने केवल vi का उपयोग करके बिताया। ऐसा करने पर, मुझे एहसास हुआ कि मैं अपने सभी पाठ संशोधन की जरूरतों के लिए विम पर निर्भर था। Vi के साथ अपनी यात्रा से पहले, जब भी मुझे किसी पाठ को स्थानापन्न करना होता था या फ़ाइलों के एक बड़े समूह में एक समान संचालन करना होता था, तो मैं बस विम में फ़ाइलों को खोल देता था और एक :bufdoकमांड चलाता था, और जब भी मुझे कुछ फ़ाइलों को इंडेंट या प्रारूपित करना होता था, मैं उन्हें विम में खोलूंगा और विम =और gwकमांड का उपयोग करूंगा । मैं विम-आश्रित था। यह महसूस करने के बाद कि वीआई के पास ये आदेश नहीं थे, मुझे मजबूर किया गया कि मैं इसके साथ sedअन्य पाठ कार्यक्रमों के बारे में बहुत कुछ सीख सकूं awkऔरindent। हालांकि मैंने अंत में विम का उपयोग करने के लिए वापस स्विच किया, कम चित्रित संपादक का उपयोग करके मैंने जो ज्ञान प्राप्त किया वह पर्याप्त था और बेहद उपयोगी साबित हुआ। एक पाठ संपादक के बाहर उपकरण के बारे में सीखने के अलावा, मैं vi से भी बेहतर परिचित हो गया। जब भी मैं एक नई प्रणाली या एक सर्वर पर काम कर रहा हूं जिसमें विम नहीं है, तो मैं अपने महीने भर के भ्रमण से पहले किए गए vi की तुलना में बहुत अधिक आरामदायक महसूस करता हूं।

इसके अलावा, पिछले महीने मैंने सस्ते WM8650 टैबलेट पर लिनक्स स्थापित किया और पाया कि विम और vi के बीच ध्यान देने योग्य प्रदर्शन अंतर है, इसलिए मैं टैबलेट पर vi का उपयोग करता हूं।


3
मुझे लगता है कि यह आईटी में एक सामान्य मुद्दा है- जो उपकरण हमारी मदद करते हैं वे उन चीजों को भी अस्पष्ट कर सकते हैं जिन्हें हम सीखना बंद कर देंगे।
दानो

दरअसल, कई फाइलों पर इन-प्लेस फाइल एडिटिंग को हैंडल करना या तो Awk या Sed के साथ किया जा सकता है । ( -iदोनों पर स्विच एक GNU एक्सटेंशन है।) लेकिन आप इन्हें कुछ इस तरह से उपयोग कर सकते हैं जैसेfor f in *; do printf '%s\n' '%!sed -e '\''some sed command'\' x | ex "$f"; done
वाइल्डकार्ड

12

मेरे पास एक कठिन समय होगा जो बिना विम के रह सकता है लेकिन मैं vi नहीं कर सकता । हालांकि, पूर्व सीखना कम से कम आपको इस विचार के साथ छोड़ देगा कि बाद में जब यह सब उपलब्ध है, तो कैसे निपटें।

डिफ़ॉल्ट रूप से विम इंटरफ़ेस वास्तव में vi के बहुत करीब है। अगर मैं पहली बार vim वाली प्रणाली पर काम कर रहा हूं, तो मैं इस सामान को इसमें जोड़ दूंगा ~/.vimrc:

syntax enable
set nocp
set wildmenu

मेरे द्वारा पसंद किए जाने वाले अन्य सामानों का एक समूह है - अब्रैप और नंबरिंग, आदि - लेकिन कोई बात नहीं। "सिंटैक्स सक्षम" बस मूल सिंटैक्स हाइलाइटिंग पर मुड़ता है (कुछ हद तक बीफियर: filetype plugin onमौलिक भी है); "nocp" vi संगतता को बंद कर देता है और यह वही है जो तु को पुरानी vi से अलग करना शुरू करता है (जैसे, यह सक्षम बनाता है showmodeजो पूरे अनुभव को कुछ और मानवीय बनाता है, क्योंकि अब आपके पास कुछ सुराग है कि आप कमांड में हैं या ~ INSERT मोड)। "वाइल्डमेनू" बस आपको कुछ चीजें करते समय एक क्षैतिज समापन मेनू देता है, जिससे जीवन भी आसान हो जाता है।

Vim की टेक्स्ट एडिटिंग सुविधाएं किसी से भी कम नहीं हैं - Emacs के अलावा, मैंने कभी किसी सॉफ्टवेयर के टुकड़े को देखा या सुना नहीं है जो करीब आता है। वे सीखना आसान नहीं है, लेकिन एक बार जब आप उन्हें जानते हैं, तो वे माउस मेनू की तुलना में बहुत तेज होते हैं और माउस मेनू आधारित इंटरफेस में सरल कुंजी मैक्रो विकल्प की तुलना में बहुत अधिक गतिशील होते हैं। प्रोग्रामिंग के लिए, मैं कभी-कभी ग्रहण जैसे आईडीई के साथ विम का उपयोग करता हूं, लेकिन मैं अधिकांश काम विम में करता हूं।

यदि आप वह रास्ता अपनाते हैं, तो, स्वतः पूर्णता और टैगलिस्ट प्लग इन देखें। और अंधेरे पक्ष से सावधान रहें।


मैं set mouse=aभी हमेशा जोड़ता हूं ।
ott--

आपके प्रोग्रामिंग टिप्पणी के बारे में, आप पा सकते हैं eclim दिलचस्प ...
ire_and_curses

@ire_and_curses: यह कोशिश नहीं की है। ग्रहण और विम दोनों स्रोत फ़ाइलों की निगरानी करते हैं और उन्हें बाहरी रूप से अपडेट करने की अनुमति देते हैं, और एक डेस्कटॉप से ​​दूसरे में फ्लिपिंग एक डेस्कटॉप से ​​दूसरे डेस्कटॉप पर फ़्लिप कर रहे हैं। काफी विचार थोम जैसा लगता है।
गोल्डीलॉक्स

हालाँकि मुझे नहीं लगता कि यह उत्तर चुना हुआ उत्तर होना चाहिए (क्योंकि यह पक्षपातपूर्ण है), यह बिल्कुल उसी प्रकार का परिप्रेक्ष्य है जो मतभेदों को समझने में मददगार है। एक स्थिति लेने के लिए धन्यवाद।
जीनोरमा

8

इसका फायदा यह है कि vi आमतौर पर AIX या Solaris जैसे एंटरप्राइज़ UNIX में प्रीइंस्टॉल्ड होता है। इसके अलावा स्थापना मीडिया पर विम पहुंच योग्य नहीं है।


1

मैंने देखा है कि मैं केवल चयन Viके ऊपर VIMजब मैं कॉपी करने कर रहा हूँ और किसी टेक्स्ट दस्तावेज़ या कॉन्फ़िग फ़ाइल है कि मैं का इस्तेमाल किया है चिपकाने catआदेश। इसका कारण यह है जब मैं करने की कोशिश ctrl-cऔर उसके बाद ctrl-vमें VIMखोला दस्तावेज़, यह सब लाइनों बलों उनमें से एक टिप्पणी सामने है। तो जब मैं का उपयोग Viकरने के लिए ctrl-vया pasteमें Viखोला दस्तावेज़, यह चिपकाता है मैं वास्तव में क्या से नकल। इसके अलावा, मैं VIMपूरे दिन का उपयोग करता हूं ।

का आनंद लें!


5
कोशिश:set paste
पैट्रिक

3
सेट pastetoggle = <F2> इन .vimrc ( vim.wikia.com/wiki/Toggle_auto-indenting_for_code_paste )
डेव

1

जैसा कि पिछले उत्तर पहले ही उल्लेख कर चुके हैं, vi वहां से निकलने वाली हर UNIX प्रणाली के बारे में बताता है।

मैं सिर्फ एक उदाहरण जोड़ना चाहता था। आर्क लिनक्स एक विशेष रूप से लोकप्रिय और हल्का डिस्ट्रो है जो न तो इंस्टॉलर, या बेस डिस्ट्रो डिफ़ॉल्ट रूप से विम के साथ आता है, हालांकि दोनों वीआई के साथ आते हैं।

यह vi प्रति se के लिए एक फायदा नहीं है , क्योंकि आप बस मैन्युअल रूप से vim इंस्टॉल कर सकते हैं, और आपको उस इंस्टॉलेशन को पूरा करने की आवश्यकता है जिसमें टेक्स्ट एडिटर की आवश्यकता होती है, और जहां उद्देश्य के लिए vim से बेहतर vim कुछ भी नहीं है। लेकिन अंतर को समझना और यह कि वीआई की तुलना में अधिक सर्वव्यापी और हल्का है, यह कुछ आला फायदे देता है।

इसके अलावा, बस व्यापक होने के लिए, कोई भी अभी तक स्पष्ट रूप से नहीं मिला है कि vi विम के लिए प्रत्यक्ष अग्रदूत है। विम विशेष रूप से वह सब कुछ था जो vi था, और अधिक।

तो बहुत सीधे तरीके से, विम vi से बेहतर है, क्योंकि यह होने के लिए डिज़ाइन किया गया था


1

वी ओवर विम का उपयोग करने का एकमात्र कारण यह है कि आपके पास कोई अन्य विकल्प नहीं है।

विम, "vi बेहतर" के लिए कई कारण हैं!

संबंधित पोस्ट से उधार लेकर मैंने उत्तर दिया: -

  1. एकाधिक विंडो - क्षैतिज, ऊर्ध्वाधर और टैब।
  2. विजुअल हाइलाइटिंग।
  3. के माध्यम से ऑनलाइन मदद: मदद कमांड।
  4. मैक्रो को एक रजिस्टर में रिकॉर्ड करें जिसे आप तब निष्पादित कर सकते हैं।
  5. पुराने vi के पागल पूर्ववत टॉगल के बजाय कई बार पूर्ववत करें (और फिर से करें)।
  6. कमांड लाइन इतिहास, खोज इतिहास।
  7. उपलब्ध कार्यों के एक मेजबान के साथ एम्बेडेड एक पूरी भाषा, उदाहरण के लिए getcwd ()
  8. तेजी से विस्तारित पैटर्न मिलान।
  9. Ctrl-P & ctrl-N के माध्यम से पूरा होने वाला शब्द।
  10. फ़ाइल नेविगेटर में निर्मित (थोड़ा क्लंकी, लेकिन उपयोगी हो सकता है)।
  11. ESC कुंजी वास्तव में उन आदेशों का उल्लेख करती है जिन्हें आप कोशिश कर रहे थे, ठीक है, (insanely) के बजाय उन्हें चलाने से बचते हैं जैसे vi करता है।
  12. सभी बफ़र्स, आर्ग्स या विंडोज़ पर बफ़डो, अर्गडो और विंडो के माध्यम से कमांड चलाने की क्षमता।

आप शायद यहाँ पर "अनेकों, कई" कारणों का उल्लेख कर सकते हैं जो आपने unix.stackexchange.com/a/425597/85039 उत्तर में दिए हैं। इससे यह उत्तर थोड़ा बेहतर होगा; अन्यथा यह एक वास्तविक उत्तर की तुलना में अधिक टिप्पणी की तरह पढ़ता है
सर्जियो कोलोडियाज़नी

मुद्दा लेना। अपडेट किया गया उत्तर, संबंधित उत्तर से उधार लेकर मैंने कल बनाया।
पॉल टी

1

यह विम कॉन्स से निकला है :

मास्टर Wq और यूनिक्स मास्टर

एक पुराना यूनिक्स मास्टर मास्टर Wq आया था। “मैं परेशान हूँ, Wq। आप विम का तरीका सिखाते हैं। vi पवित्र है लेकिन विम नहीं है; इसके कोड में फैलाव, इसकी विशेषताएं भीड़ मेमोरी; इसके बायनेरिज़ विशाल हैं, इसका व्यवहार असंगत है। यह यूनिक्स का तरीका नहीं है। मुझे डर है कि आप अपने छात्रों को गुमराह करेंगे। क्या किया जा सकता है?"

मास्टर Wq सिर हिलाया। "आप सही हैं," उन्होंने कहा। “विम टूट गया है। इसे हम ठीक करें। क्या हम शुरुआत करें?"

पुराने यूनिक्स मास्टर सहमत हुए, और एक खोल खोला। उसने टाइप किया:

$ vi vim.c

वह कोड करने लगा। मास्टर Wq ने थोड़ी देर तक देखा और फिर उनसे पूछा, “आप किस कार्यान्वयन का उपयोग कर रहे हैं? NVI? विम? एल्विस? "

"मुझे नहीं पता," यूनिक्स मास्टर ने कहा। "इससे कोई फर्क नहीं पड़ता।"

मास्टर Wq सिर हिलाया। यूनिक्स मास्टर एक पल के लिए स्तब्ध रह गया और अपने दस्तावेज़ को बिना सहेजे बंद कर दिया।

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