VIM की सबसे उपयोगी विशेषताएँ जो एक IDE में मानक नहीं हैं [बंद]


30

मैं इस बात पर विचार कर रहा हूं कि क्या मुझे आईडीई के बजाय फिर से वीआईएम का उपयोग शुरू करना चाहिए। एक आईडीई में मानक नहीं हैं कि वीआईएम की सबसे उपयोगी विशेषताएं क्या हैं?


3
आप किस आईडीई का उपयोग करते हैं? कई IDE में VIM प्लगइन्स होते हैं ताकि आप संपादित कर सकें जैसे कि आप VIM का उपयोग कर रहे थे।
ब्रायन आर। बॉडी

2
@ ब्रायन: निश्चित रूप से उन्होंने सभी उन्नत सुविधाओं का अनुकरण नहीं किया?
केसबश

1
शायद सभी नहीं, लेकिन मैंने जो उपयोग किया है वह वीएस के लिए बहुत अच्छा है। उनमें से कम से कम 2 हैं। viemu.com और github.com/jaredpar/VsVim
ब्रायन आर। बॉन्डी

2
@ ब्रायन आर बॉंडी: उनमें से कोई भी विम की सभी विशेषताओं को कवर करने के लिए करीब नहीं आता है। वे सतह को
खरोंचते हैं

2
या आप वास्तव में समझदार हो सकते हैं और emacsइसके बजाय उपयोग करना शुरू कर सकते हैं। ;-)
परिक्रमा

जवाबों:


32

मुझे नहीं लगता कि इसकी जरूरी विशेषताएं VIM की उन्नत विशेषताएं हैं जो इसे इतना शक्तिशाली बनाती हैं। इसका तथ्य यह है कि आपको कभी भी कुछ भी करने के लिए कीबोर्ड से अपने हाथ नहीं हटाने होंगे। एक विशाल फ़ाइल में कुछ खोजना कीस्ट्रोक्स के एक जोड़े के रूप में सरल है। एक ही विंडो में कई फाइलें खोलना और बंद करना अविश्वसनीय रूप से तेज है।

हालांकि यह पहली बार में सहज नहीं लग सकता है, लेकिन यह आपके समय के लायक है। यहां तक ​​कि अगर आप इसे अपने मानक आईडीई के रूप में उपयोग नहीं करते हैं (मैं आमतौर पर विज़ुअल स्टूडियो या एक्लिप्स का उपयोग करता हूं, उदाहरण के लिए), तो आप अपने स्वयं के वीआईएम का उपयोग करके फ़ाइलों को जल्दी से खोलेंगे और संपादित कर पाएंगे क्योंकि यह आईडीई की प्रतीक्षा करने की तुलना में तेज़ हो जाता है। भार।

वीआईएम का अच्छी तरह से उपयोग करने का तरीका जानने के लिए समय का निवेश करें और आप इसे कभी पछतावा नहीं करेंगे। मैं इसके टच-टाइप करने के लिए सीखने की तुलना कहूँगा।


3
यह उत्तर शायद विम के लिए सबसे उपयोगी विशेषता है, यह भी एकमात्र में से एक है। विम के लिए प्रोग्राम किया गया कुछ भी आसानी से IDE के लिए भी लागू किया जा सकता है, यह सब के बाद सिर्फ टेक्स्ट प्रोसेसिंग है ...
Tamara Wijsman

4
+1 जब भी मैं एक भक्त हूँ, एक ही तर्क लागू होता है। आधुनिक आईडीई पाठ संपादकों के लिए बहुत अधिक "चित्रमय" हैं ।
परिक्रमा

22

मेरे लिए :globalकमांड एक किलर ऐप है। यह किसी भी लाइन पर मनमाना vim कमांड निष्पादित करेगा जो एक रेगेक्स से मेल खाता है (या मेल नहीं खाता)।

यहाँ कुछ उदाहरण हैं:

डिफ़ॉल्ट व्यवहार हर उस रेखा को सूचीबद्ध करता है जो मेल खाती है, इसलिए:

:g/TODO:/

हर पंक्ति को सूचीबद्ध करेगा जिसमें "TODO:" पाठ शामिल है।

'मिकी' को किसी भी लाइन पर 'मिन्नी' में बदलें जिसमें 'माउस' शब्द भी हो

:g/Mouse/ s/Mickey/Minnie/

कमांड की अपनी सीमा हो सकती है, इसलिए यह "TODO:" के साथ हर लाइन से अगली खाली लाइन तक हट जाएगी:

: g / TODO: /।, / ^ $ / d

का प्रयोग करें: जी! रेग्क्स से मेल न खाने वाली हर लाइन पर अमल करना, जैसे "वीक्स" को "वीक्स" से बदलना, जैसे कि "बेकार" शब्द को शामिल करना:

:g!/sucks/ s/emacs/vim/

ग्लोबल कमांड के साथ शानदार ट्रिक्स! मैंने उन्हें इस तरह इस्तेमाल करने के बारे में कभी नहीं सोचा था।
जेवियर टी।

ग्रहण फ़ाइलों के regex खोज का समर्थन करता है, या तो व्यक्तिगत फ़ाइलों के रूप में, परियोजनाओं, या एक ही कार्यक्षेत्र में परियोजनाओं के पार। रेगेक्स रिप्ले भी कुछ हद तक समर्थित है, लेकिन मेरा मानना ​​है कि विम में एक बहुत अधिक शक्तिशाली रेगेक्स क्षमता है।
थॉमस ओवेन्स

16

मैं युग्मित प्रतीकों के एक सेट के बीच अविश्वसनीय रूप से उपयोगी सभी चीजों को हटाने की क्षमता पाता हूं। उदाहरण के लिए, काफी बार, मैं खुद को कोड में एक स्ट्रिंग को बदलने के लिए चाहूंगा। इसलिए, di"जबकि कर्सर ब्लॉक में है, स्ट्रिंग को हटा देगा, जबकि ""अक्षुण्ण रखते हुए , और कर्सर को दो उद्धरण वर्णों के बीच में रख देगा। da"एक ही बात करता है, लेकिन उद्धरण वर्णों को भी हटा देता है।


12
इससे भी बेहतर, ci"हटाता है और कर्सर को इन्सर्ट मोड में डालता है ताकि आप तुरंत लिखना शुरू कर सकें।
कोनराड रुडोल्फ

9

'प्रविष्टि मोड कीवर्ड पूर्णता'। Ctrl-P और Ctrl-N इंसर्ट करने के लिए टेक्स्ट के माध्यम से सर्च करने के लिए जो भी वैरिएबल नाम आप टाइप कर रहे हैं उसे पूरा करने के लिए। मैंने इसे किसी अन्य आईडीई में कभी नहीं देखा है और मैं वास्तव में इसे याद करता हूं। आईडीई के कोड को पूरा करने का कोड समान नहीं है।


2
यदि आप चाहते हैं तो ओमनी-पूर्ण का उपयोग करके भी आपके पास उचित कोड पूरा हो गया है। ^X^Oयदि आप इसे सक्षम करते हैं, तो omni- इन्सर्ट मोड में। लेकिन आप सही हैं, मैं खुद को ओमनी-पूर्ण से कहीं अधिक कीवर्ड पूर्णता का उपयोग कर पाता हूं।
चिन्मय कांची

@ चिनमय: मुझे लगता है कि आपके पास "उचित" का अर्थ है पीछे। उचित कोड पूरा होना स्थानीयता के सिद्धांत का उपयोग करके कुछ भी पूरा करता है, भले ही आप कोड के बजाय पाठ लिख रहे हों।
निंजाल

स्लिकएडिट में एक समान विशेषता है; और यह बहुत IDE-like है
user281377

8
मैं पूरी तरह असहमत हूं। आधुनिक आईडीई (विज़ुअल स्टूडियो, एक्लिप्स, ...) एक तरह का कोड पूरा करता है जो प्रतिद्वंद्वियों (और वास्तव में इससे आगे निकल जाता है!) आसानी से Ctrl-N । यदि आपने इसे आईडीई में नहीं देखा है, तो वर्तमान संस्करणों को फिर से देखें। और ओमनी-पूरी दुर्भाग्य से ठीक से काम नहीं करती है।
कोनराड रुडोल्फ

8

एक अन्य विशेषता जो मुझे अविश्वसनीय रूप से उपयोगी लगती है वह है इंडेंटेशन को बदलने की क्षमता। :15,30>>15-30 (समावेशी) से सभी लाइनों को दो बार :15,30<<प्रेरित करता है , जबकि एक ही लाइनों को दो बार डी-इंडेंट करता है।


जब मैं इस फीचर को पसंद करता हूं, तो बहुत ज्यादा हर IDE में इंडेंट (और समर्पण) होता है।
सीन मैकमिलन

मुझे लगता =है जैसे, अगर अधिक नहीं, से अधिक उपयोगी <<और >>
ग्रेफेड

6

कमांड dd (करंट लाइन हटाएं)। मैं इस एक का इतना उपयोग करता हूं।

इसके अलावा, 3 डी की तरह कुछ टाइप करने और अगली 3 लाइनों को हटाने में सक्षम होना अद्भुत है। मैंने इसे किसी अन्य संपादक = डी में कभी नहीं देखा है


नेटबीन्स के पास लगभग यह है, ^ बिना चयन वाले एक्स वर्तमान लाइन में कटौती करेगा ।
एलन पीयर्स

@ एलन: नहीं, नेटबीन्स में jVi :) है
डॉ। हैनिबल लेक्टर

^ K ने रेखा को हटा दिया और ^ u3 ^ k ने emacs में 3 लाइनें हटा दीं। दृश्य स्टूडियो में शिफ्ट-डिलीट वही करता है।
राउल

एलन: dd उस अर्थ में भी वर्तमान रेखा को काटता है कि इसे बाद में p के साथ डाला जा सकता है
user281377

3
@ राउल, हम जानते हैं कि हर vim कमांड को दोहराने के लिए n 3-कुंजी संयोजन की एक emacs श्रृंखला है - फिर भी, 3dd कविता है।
cbrandolino

6

cआदेश। उदाहरण के लिए, ci"उद्धरण के अंदर बदलना। cwशब्द बदलने के लिए। इसके साथ बहुत सारे आसान ट्रिक्स।



3

Esc ! }वर्तमान पैराग्राफ को कमांड लाइन फिल्टर की तरह बंद कर देगा fmtया wcया whichसंपादक को परिणाम लौटा देगा।


3

कमांड लाइन के लिए तेजी से पहुँच। CTRL + Z या: wqa मुझे कीबोर्ड से मेरे हाथ के बिना 1sec से कम में कमांड लाइन मिलेगी।


1
+1 कि थोड़ा सा अंतिम सभी लाभों के लिए महत्वपूर्ण खंड है: कीबोर्ड को छोड़े बिना मेरे हाथ में
Orbling

... या :!/bin/bash। मैं :!अक्सर उपयोग करता हूं ।
ग्रेफेड

मैं आमतौर पर उपयोग करता हूं:sh
डेविड ब्राउन

3

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


1

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

हालाँकि, मेरा मानना ​​है कि विम को अन्य संपादकों (हाँ, यहां तक ​​कि इस पर एमएसीएस) से अलग है, यह वास्तव में एक महान संपादक है । मैं समय के गुजरने में, कई संपादकों का इस्तेमाल किया है, और ईमानदारी से कह सकते हैं कि बहुत कम ही पाठ में हेरफेर करने के लिए इस तरह के पूर्ण सेट के साथ आते हैं, जैसे विम करता है।

उदाहरण के लिए पाठ में हेरफेर करने की मेरी शैली में बहुत बार (लाइन / कई लाइनों का चयन) दोहराव का उपयोग और ऊपर और नीचे (कई लाइनों का लाइन / चयन) शामिल है, जिसके लिए मैंने बहुत पहले त्वरित शॉर्टकट परिभाषित किए हैं। मैं सबसे IDE में उन सुविधाओं को याद करता हूं (हालांकि मैंने सुना है कि ReSharper for VS में भी कुछ ऐसा ही है)।


1

क्या आप जानते हैं कि ग्रहण के लिए एक vi प्लगइन है ? इसकी कीमत 15 यूरो (20ish यूएस डॉलर) है लेकिन यह इतनी कीमत है। ddएक दस्तावेज़ के बीच में और अधिक नहीं , और सभी छोटी उपयोगी चीजों को याद नहीं करना।

शायद थोड़ा सा विषय लेकिन मुझे लगा कि यह इंगित करने लायक था।


0

इस बात पर निर्भर करते हुए कि आप किस भाषा में प्रोग्रामिंग कर रहे हैं, विचारधारा से चिपके रहें, या उस विचारधारा को प्राप्त करें जो आपको सबसे अधिक रिफ्लेक्टर प्रदान करती है, जो आपको मिल सकती है, विजुअल स्टूडियो के लिए रिचार्पर प्राप्त कर सकते हैं यदि आप c # कर रहे हैं, जावा के लिए intellij, या विज़ुअल स्टूडियो के लिए दृश्य सहायता, ग्रहण या netbeans में प्रतिक्षेपक को अधिकतम करें।

हमें कोड में हेरफेर करने के लिए पाठ में हेरफेर करने से आगे बढ़ना चाहिए, रीफैक्टरिंग उपकरण आपको वह क्षमता प्रदान करते हैं। अगर विम आपको सभी सुविधाएं ठीक देता है, तो मैं एक के लिए वास्तव में एक पाठ संपादक के साथ सौदा नहीं करना चाहता


3
यह बहुत बकवास है। हां, रिफैक्टरिंग एक महत्वपूर्ण उपकरण है, लेकिन कोड स्वयं नहीं लिखता है। एक अच्छा टेक्स्ट एडिटर प्रोग्रामर की उत्पादकता में एक अच्छे रीफैक्टरिंग टूल की तुलना में कहीं अधिक योगदान देता है ।
चिन्मय कांची

-1

तालिका स्तंभ का चयन करें

यह लोकप्रिय IDEs में नहीं लगता है, और यदि यह है तो वे इसे अच्छी तरह से छिपाकर रखते हैं। यह CSV डेटा फ़ाइल में एक स्तंभ के खिलाफ regex के परीक्षण के लिए वास्तव में आसान है।


-3

अधिकांश आईडीई आपको स्क्रीन को विभाजित करने की अनुमति नहीं देते हैं। मुझे वह फीचर VIM में पसंद है।


5
अधिकांश आईडीई नहीं है? मुझे लगता है कि अधिकांश वास्तव में ऐसा करते हैं, कम से कम जो मैंने उपयोग किया है।
Anto

क्या आप कुछ उदाहरण दे सकते हैं?
प्रोजाकटज़रो

1
अधिकांश IDE की हैंडल स्क्रीन Vim / Emacs से अलग होती है। वे इसे आमतौर पर टैब के साथ करते हैं। ये कीबोर्ड के साथ हेरफेर करने के लिए कठिन / असंभव हैं (Emacs में 50 फ़ाइलों को खोलने की तुलना में बनाम ग्रहण में 50 फाइलें खुली हैं और आप जल्दी से Emacs जीत पाएंगे)।
jsternberg

अधिकांश IDE जो स्प्लिटस्क्रीन रखते हैं वे नेविगेट करने / ए-ला को समायोजित करने के आसान तरीके प्रदान नहीं करते हैं<C-w>
वेन वर्नर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.