विम के अंधेरे कोने क्या हैं आपकी माँ ने आपको कभी नहीं बताया? [बन्द है]


799

ऐसे प्रश्नों की अधिकता है जहाँ लोग सामान्य चाल के बारे में बात करते हैं, विशेष रूप से " विम + ctags टिप्स और ट्रिक्स "।

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


10
: सेक्स स्प्लिट विंडो और ओपन इंटीग्रेटेड फाइल एक्सप्लोरर (क्षैतिज विभाजन)
user3218088

2
यह प्रश्न बहुत रचनात्मक लगता है - उत्थान की संख्या को देखकर ..., फिर से खोलने के लिए मतदान किया - शायद कुछ और भी कूलर का उत्तर आता है - जो कि उपयोगी होने पर अपवित्र हो सकता है - इसलिए एसओएफ को अधिक मूल्य दे। वोटों के जवाबों का आदेश देते हुए मैंने केवल 5 मिनट में बहुत सारी चीजें सीखी हैं ... यहाँ वास्तव में मूल्यवान सामान है, इस मूल्यवान चीज़ को क्यों बंद करें? यह कैसे रचनात्मक नहीं है?
jhegedus

7
हास्यास्पद है कि यह प्रश्न बंद है। वैधता की बात करते हैं।
लेपिडोप्टेरिस्ट

2
मुझे लगता है कि यह प्रश्न बहुत ही रचनात्मक है लेकिन, Quora पर अधिक उपयुक्त है।
दिओगो मेलो

2
इस प्रश्न को हटाने के लिए 2 (अब तक) वोट क्यों हैं? क्या अच्छा होगा यह संभवतः?
अकवल

जवाबों:


782

एक ऐसा नहीं हो सकता है जो 99% विम उपयोगकर्ताओं के बारे में नहीं जानता है, लेकिन यह कुछ ऐसा है जो मैं दैनिक उपयोग करता हूं और यह कि किसी भी लिनक्स + विम पॉवरसुधार को पता होना चाहिए।

बेसिक कमांड, फिर भी बेहद उपयोगी।

:w !sudo tee %

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

आप स्पष्ट रूप से स्थापित sudo के साथ एक प्रणाली पर है और sudo अधिकार है।


116
यकीनन, यह रूट के रूप में विम से भी बेहतर है! Upvoted!
अराफंगियन

27
एक noob के लिए, वास्तव में टी क्या करता है? क्या कोई मेरे लिए इस आदेश को पार करने का मन करेगा?
एंडीएल

41
cmap w !! w!
सुडो

58
आपको कभी नहीं दौड़ना चाहिए sudo vim। इसके बजाय आपको EDITORविम के रूप में निर्यात करना चाहिए और चलाना चाहिए sudoedit
गेरार्डो मार्सट

8
@ maximus: vim वर्तमान बफ़र / फ़ाइल के नाम से% बदलता है।
मिगू

617

कुछ ऐसा जो मैंने हाल ही में खोजा था जो मुझे लगा कि बहुत अच्छा है:

:earlier 15m

15 मिनट पहले दस्तावेज़ को वापस लौटाता है। जिस समय आप वापस रोल करना चाहते हैं, उस राशि के लिए विभिन्न तर्क ले सकते हैं, और अनचाहे पर निर्भर है। विपरीत आदेश के साथ उलटा किया जा सकता है:later


6
@skinp: यदि आप पूर्ववत करते हैं और फिर पूर्ववत स्थिति से और परिवर्तन करते हैं, तो आप उस पुनः इतिहास को खो देते हैं। यह आपको एक ऐसी स्थिति में वापस जाने देता है जो अब पूर्ववत स्टैक में नहीं है।
एपीकेमिएंट

39
इसके अलावा बहुत उपयोगी है जी + और जी- पिछड़े और समय में आगे बढ़ने के लिए। यह पूर्ववत / फिर से स्टैक की तुलना में बहुत अधिक शक्तिशाली है क्योंकि जब आप किसी पूर्ववत के बाद कुछ करते हैं तो आप इतिहास को ढीला नहीं करते हैं।
एटिने पियरे

9
यदि आप किसी पूर्ववत् के बाद परिवर्तन करते हैं तो आप फिर से इतिहास नहीं खोते। यह आसानी से पहुँचा नहीं है। आपकी कल्पना करने में मदद करने के लिए प्लगइन्स हैं, जैसे Gundo.vim
एहतेश चौधरी

559
वाह, तो अब मैं बस कर सकता :later 8hहूँ और मैं आज के लिए कर रहा हूँ? : P
इगोर पोपोव

7
आपका आदेश मानता है कि कोई भी कम से कम 15 मिनट व्यर्थ में बिताएगा !
e2-e4

411

:! [command] जब आप विम में हों तो एक बाहरी कमांड निष्पादित करें।

लेकिन बृहदान्त्र के बाद एक डॉट जोड़ें :.! [command], और यह आपके वर्तमान विंडो में कमांड के आउटपुट को डंप करेगा। यही कारण है कि के: . !

उदाहरण के लिए:

:.! ls

मैं इसे बहुत सी चीजों के लिए उपयोग करता हूं जैसे कि एक दस्तावेज़ में वर्तमान तिथि जोड़ रहा हूं जो मैं टाइप कर रहा हूं:

:.! date

74
यह काफी समान है: आर! जहाँ तक मैं बता सकता हूँ कि अंतर केवल इतना है: आर! एक नई लाइन खोलता है:।! वर्तमान लाइन को ओवरराइट करता है।
दोपहर ०

6
एक विकल्प यह :.!dateहै कि एक लाइन पर "तारीख" लिखें और फिर चलाएं !$sh(वैकल्पिक रूप से कमांड के बाद एक रिक्त लाइन और रन करें !jsh)। यह लाइन को "श" शेल तक पाइप करेगा और कमांड से आउटपुट के साथ स्थानापन्न करेगा।
hlovdal

43
:.!वास्तव में एक विशेष मामला है :{range}!, जो .एक कमांड के माध्यम से लाइनों की एक सीमा (वर्तमान लाइन जब सीमा होती है ) को फ़िल्टर करता है और उन लाइनों को आउटपुट से बदल देता है। मुझे :%!पूरे बफ़र्स को छानने के लिए उपयोगी लगता है।
नेफरूबियर

2
@sundar: sedजब आप समान बिल्ट-इन ed/ exकमांड्स का उपयोग कर सकते हैं, तो लाइन को पास क्यों करें ? दौड़ने की कोशिश करें :.s/old/new/g;-)
jabirali

4
और यह भी ध्यान दें कि ''! 'y', 'd', 'c' आदि की तरह है, यानी आप कर सकते हैं: !!, नंबर !!; गति! (जैसे! Gshell_command <cr> को मौजूदा लाइन से फाइल के अंत में बदलें ('G') shell_command का आउटपुट)।
एकन

312

बिल्कुल अस्पष्ट नहीं है, लेकिन कई "हटाएं" कमांड हैं जो बेहद उपयोगी हैं, जैसे ..

  • diw वर्तमान शब्द हटाने के लिए
  • di( वर्तमान पार्न्स के भीतर हटाने के लिए
  • di" उद्धरण के बीच पाठ को हटाने के लिए

दूसरों पर पाया जा सकता है :help text-objects


8
dab "डिलीट अरनॉब ब्रैकेट्स", डाबी लगभग कर्ली ब्रैकेट्स के लिए, xml टाइप टैग्स के लिए t, सामान्य कमांड्स के साथ संयोजन cib / yaB / dit / vat आदि के समान हैं
sjh

15
@ मासी: yi (va (p केवल कोष्ठक हटाता है
डॉन रेबा

42
यह संभवतः मेरे लिए विम के साथ रहने का सबसे बड़ा कारण है। वह और उसके समतुल्य "परिवर्तन" कमांड: ciw, ci (, ci), साथ ही dt <space> और ct <space>
thomasrutter

4
@thomasrutter: dt <space> के बजाय dW / cW क्यों नहीं?

9
@ मासी: सराउंड प्लगइन के साथ: ds (?

237

डी दबाकर शब्द के अंत तक हटाएं सब कुछ। आपके दिल की इच्छा पर

ci (xyz [Esc] - यह एक अजीब बात है। यहां, 'i' का मतलब इंसर्ट मोड नहीं है। इसके बजाय इसका अर्थ कोष्ठक के अंदर होता है। इसलिए यह क्रम आपके द्वारा खड़े किए गए कोष्ठक के अंदर के पाठ को काट देता है और इसे बदल देता है। । "xyz" यह भी अंदर वर्ग और आंकड़ा कोष्ठक काम करता है -।। बस ci [या ci {तदनुसार स्वाभाविक रूप से, आप di कर सकते हैं (यदि आप बस लिखते कुछ भी बिना सभी पाठ हटाना चाहते हैं आप भी कर सकते हैं कर aके बजाय iअगर आप कोष्ठक के रूप में अच्छी तरह से न केवल उनके अंदर पाठ को हटाना चाहते हैं।

ci " - पाठ को वर्तमान कोट्स में काटता है

ciw - वर्तमान शब्द को काटता है। यह पिछले वाले की तरह ही काम करता है सिवाय इसके कि इसके (साथ बदल दिया जाए w

सी - बाकी की रेखा काटें और मोड डालने के लिए स्विच करें।

ZZ - वर्तमान फ़ाइल को सहेजें और बंद करें (वर्तमान टैब को बंद करने के लिए Ctrl-F4 से अधिक तेज़!)

ddp - करंट लाइन को एक पंक्ति नीचे ले जाएँ

xp - करंट कैरेक्टर को एक पोज़िशन में दाईं ओर ले जाएँ

यू - अपरकेस, इसलिए viwUशब्द को उभारता है

~ - स्विच मामला है, इसलिए viw~पूरे शब्द के आवरण उलट देगा

Ctrl + u / Ctrl + d पृष्ठ को आधे-ऊपर या नीचे स्क्रॉल करें। यह सामान्य फुल-स्क्रीन पेजिंग की तुलना में अधिक उपयोगी लगता है क्योंकि इससे यह देखना आसान हो जाता है कि दोनों स्क्रीन कैसे संबंधित हैं। उन लोगों के लिए जो अभी भी एक बार में पूरी स्क्रीन को स्क्रॉल करना चाहते हैं, फॉरवर्ड के लिए Ctrl + f और बैकवर्ड के लिए Ctrl + b है। Ctrl + Y और Ctrl + E एक समय में एक पंक्ति को नीचे या ऊपर स्क्रॉल करते हैं।

क्रेजी लेकिन बहुत उपयोगी कमांड zz है - यह स्क्रीन को इस लाइन को मध्य में प्रकट करने के लिए स्क्रॉल करता है। यह आपके ध्यान के केंद्र में काम कर रहे कोड के टुकड़े को डालने के लिए उत्कृष्ट है। सिबलिंग कमांड्स - zt और zb - इस लाइन को शीर्ष पर या नीचे वाले को श्रीं पर बनाएं जो कि उतना उपयोगी नहीं है।

मिलान कोष्ठक के लिए % ढूँढता है और कूदता है।

डी - शब्द के अंत में कर्सर से हटाएं (आप dEअगली जगह तक हटाने के लिए भी कर सकते हैं )

bde - वर्तमान शब्द को हटाएं, बाएं से दाएं सीमांकक

df [स्पेस] - जब तक और अगले स्पेस को शामिल न करें

डीटी। - अगली डॉट तक हटाएं

dd - इस पूरी लाइन को हटा दें

तु (या yE) - शब्द के अंत में यहाँ से पाठ को yanks

CE - शब्द के अंत के माध्यम से कटौती

अलविदा - वर्तमान शब्द की प्रतिलिपि बनाता है (मुझे आश्चर्य होता है कि "हाय" क्या करता है!)

yy - वर्तमान लाइन को कॉपी करता है

cc - करंट लाइन को काट देता है, आप Sइसके बजाय भी कर सकते हैं । लोअर कैप भी है sजो वर्तमान चरित्र को काटती है और मोड डालने के लिए स्विच करती है।

विवि या vivc । याँक या वर्तमान शब्द बदलें। wप्रत्येक बाद वाले शब्द का चयन करने के लिए कई बार मारो , bपीछे की ओर बढ़ने के लिए उपयोग करें

vi { - आकृति कोष्ठक में सभी पाठ का चयन करें। va {- {} s सहित सभी पाठ का चयन करें

vi (p - s) के अंदर सब कुछ हाइलाइट करें और पेस्ट किए गए टेक्स्ट के साथ बदलें

b और e कर्सर को शब्द-दर-शब्द स्थानांतरित करते हैं, इसी तरह से Ctrl + तीर सामान्य रूप से कैसे करते हैं । शब्द की परिभाषा थोड़ी अलग है, हालांकि, कई लगातार डीलिटर्स को एक शब्द के रूप में माना जाता है। यदि आप किसी शब्द के मध्य में शुरू करते हैं, तो b दबाने से हमेशा आपको वर्तमान शब्द की शुरुआत में मिलेगा, और प्रत्येक लगातार b अगले शब्द की शुरुआत में कूद जाएगा। इसी तरह, और याद रखना आसान है, eकर्सर को वर्तमान के अंत में, और प्रत्येक बाद में, शब्द मिलता है।

b/ के समान e, कैपिटल Bऔर Eकर्सर शब्द-दर-शब्द को सीमांकक के रूप में केवल व्हाट्सएप का उपयोग करके स्थानांतरित करें।

कैपिटल डी (एक गहरी साँस लें) कर्सर के दाईं ओर की शेष रेखा को हटा देता है, जैसे कि सामान्य संपादकों में Shift + End / Del (3 की बजाय नोटिस 2 कुंजी - शिफ्ट + डी -)


15
यदि आप किसी फ़ंक्शन या वर्ग परिभाषा की शुरुआत में इसका उपयोग करते हैं तो zt काफी उपयोगी है।
निक लुईस

9
vityऔर vitcकरने के लिए छोटा किया जा सकता yitहै और citक्रमशः।
नाथन फेलमैन

33
सभी चीजें जिन्हें आप "कट" कह रहे हैं, "परिवर्तन" है। उदाहरण: C पंक्ति के अंत तक परिवर्तन है। डीम / डी के साथ विम का "कट" का बराबर "डिलीट" है। परिवर्तन और डिलीट के बीच मुख्य अंतर यह है कि डिलीट आपको सामान्य मोड में छोड़ देता है लेकिन बदलाव आपको एक तरह के इन्सर्ट मोड में डाल देता है (हालाँकि आप अभी भी बदलाव कमांड में हैं जो कि पूरी तरह से दोहराया जा सकता है .)
लॉरेंस गोंसाल्वेस

11
मुझे लगा कि यह उन चीजों की सूची के लिए है जो बहुत से लोग नहीं जानते हैं। yy बहुत सामान्य है, मैंने सोचा होगा।
आलमो

19
byeजब आप शब्द के पहले चरित्र में होते हैं तो काम नहीं करते। yiwहमेशा करता है।
एंड्रिया फ्रांसिया

204

एक जो मुझे शायद ही अधिकांश विम ट्यूटोरियल में मिलता है, लेकिन यह बहुत उपयोगी है (कम से कम मेरे लिए), है

g; and g,

चेंजलिस्ट के माध्यम से आगे (आगे, पीछे) जाने के लिए।

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

बस मेरी 2 सेंट।


29
इसी तरह, '.अंतिम संपादित लाइन पर `.जाएंगे , और अंतिम संपादित स्थिति पर
जाएंगे

8
Ctrl-O और Ctrl-I (टैब) समान रूप से काम करेंगे, लेकिन समान नहीं। वे "कूद सूची" में पिछड़े और आगे बढ़ते हैं, जिसे आप करके देख सकते हैं: कूदता है या: ju अधिक जानकारी के लिए a: jumplist मदद करें
Kimball Robinson

17
आप परिवर्तन सूची को निम्न करके सूचीबद्ध कर सकते हैं: परिवर्तन
किमबॉल रॉबिन्सन

गर्म खतरा जो उपयोगी है। मैं हर समय इसके लिए <C-o>/ का उपयोग करता हूं <C-i>- या अपनी जगह चिह्नित करता हूं।
वेन वर्नर

187
:%!xxd

एक हेम संपादक में विम करें।

:%!xxd -r

वापस लाएं।

चेतावनी: यदि आप बाइनरी (-b) के साथ संपादित नहीं करते हैं, तो आप फ़ाइल को नुकसान पहुंचा सकते हैं। - टिप्पणियों में जोश ली।


9
और आप इसे वापस कैसे लौटाते हैं?
ईसाई

40
:! xxd -r // HEX से वापस लौटने के लिए
नागा किरण

21
मुझे वास्तव में लगता है कि इसे :%!xxd -rवापस लौटना है
एंड्रियास ग्रीच

@ जोशी: यदि कोई नई खबर को आगे नहीं बढ़ाने के लिए सावधान है, तो क्या यह बी विकल्प का उपयोग नहीं करना सुरक्षित है? मैं पूछता हूं क्योंकि कभी-कभी मैं एक हेक्स बदलाव करना चाहता हूं, लेकिन मैं ऐसा करने के लिए फ़ाइल को बंद और फिर से खोलना नहीं चाहता।
डॉटनकोहेन

4
@dotancohen: यदि आप उस फ़ाइल को बंद / फिर से खोलना नहीं चाहते हैं जो आप कर सकते हैं: बाइनरी सेट करें
बम्बू


119

कभी-कभी आपके .vimrc में सेटिंग एक प्लगइन या ऑटोकॉमैंड द्वारा ओवरराइड हो जाएगी। डिबग करने के लिए एक उपयोगी ट्रिक है: सेट के साथ संयोजन में वर्बोज़ कमांड का उपयोग करना। उदाहरण के लिए, यह जानने के लिए कि सिंटेंट को कहां सेट किया गया / परेशान किया गया:

:verbose set cindent?

यह कुछ इस तरह का उत्पादन करेगा:

cindent
    Last set from /usr/share/vim/vim71/indent/c.vim

यह नक्शे और हाइलाइट्स के साथ भी काम करता है। (यह इंगित करने के लिए धन्यवाद joeytwiddle। उदाहरण के लिए:

:verbose nmap U
n  U             <C-R>
        Last set from ~/.vimrc

:verbose highlight Normal
Normal         xxx guifg=#dddddd guibg=#111111 font=Inconsolata Medium 14
        Last set from ~/src/vim-holodark/colors/holodark.vim

8
बहुत बढ़िया टिप - ठीक वही जो मैं आज ढूंढ रहा था।
आर्टेम रसाकोवस्की

बहुत बढ़िया टिप मैन! आपको इन geeky चीजों को कैसे पता चलेगा?
रफीद

1
:verboseपहले भी इस्तेमाल किया जा सकता है nmap lया highlight Normalयह पता लगाने के लिए कि lकीमैप या Normalहाइलाइट को अंतिम रूप से कहां परिभाषित किया गया है। डिबगिंग के लिए बहुत उपयोगी है!
जॉयवेटलिड

@joeytwiddle धन्यवाद! मैंने उस जानकारी को उत्तर में जोड़ दिया।
लारेंस गोंसाल्वेस

जब आप कस्टम मैपिंग बनाने में लग जाते हैं, तो यह आपके गधे को कई बार बचाएगा, शायद यहां के सबसे उपयोगी लोगों में से एक (आईएमओ)!
सिडऑफ़


98

यकीन नहीं होता है कि अगर यह अंधेरे-कोने-ईश के रूप में गिना जाता है, लेकिन मैंने केवल इसे सीखा है ...

:g/match/y A

"a/ @aरजिस्टर में "मैच" वाली सभी लाइनों को yank (कॉपी) करेगा । (जैसा कि पूंजीकरण Aबनाता विम संलग्न बजाय पिछले रजिस्टर सामग्री की जगह की yankings।) मैं एक बहुत हाल ही में यह प्रयोग किया जाता है जब इंटरनेट एक्सप्लोरर शैली बना रही है।


मायने रखता है, के रूप में मैं यह एक नहीं देखा है मायने रखता है :)

अच्छा है। इसके बारे में कभी नहीं सुना ... उपयोगी हो सकता है: P
skinp

5
आप उपयोग कर सकते हैं: जी! उन लाइनों को खोजने के लिए जो किसी पैटर्न से मेल नहीं खाती हैं: g! / set / normal dd (सभी लाइनें हटाएं जिनमें सेट नहीं है)
tsukimi

3
कभी-कभी यह करना बेहतर होता है कि त्सुकीमी ने क्या कहा और सिर्फ उन पंक्तियों को फ़िल्टर करें जो आपके पैटर्न से मेल नहीं खाती हैं। उस कमांड का संक्षिप्त संस्करण हालांकि: :v/PATTERN/dस्पष्टीकरण: के :vलिए एक संक्षिप्त नाम है :g!, और :gकमांड किसी भी पूर्व कमांड को लाइनों पर लागू करता है। :y[ank]काम करता है और ऐसा करता है :normal, लेकिन यहाँ सबसे स्वाभाविक बात है :d[elete]
pandubear

आप यह भी कर सकते हैं :g/match/normal "Ayy- normalकीवर्ड आपको सामान्य-मोड कमांड चलाने के लिए कहता है (जिसे आप संभवतः अधिक परिचित हैं)।
किमबॉल रॉबिन्सन

93

अपने: कमांड इतिहास को देखना चाहते हैं?

q:

फिर ब्राउज़ करें, संपादित करें और अंत में कमांड निष्पादित करने के लिए।

कभी दो फ़ाइलों में समान परिवर्तन करें और उनके बीच आगे और पीछे स्विच करें? (कहते हैं, स्रोत और हेडर फ़ाइलें?)

:set hidden
:map <TAB> :e#<CR>

फिर उन फाइलों के बीच में आगे पीछे टैब करें।


131
मैं q:हर समय दुर्घटना से मारा ...
जोश ली

11
वैकल्पिक रूप से, पूर्व संपादक (:) से, आप कमांड इतिहास विंडो को पॉप अप करने के लिए CTRL-f कर सकते हैं।
जेसन डाउन

6
@ जलेदेव मुझे भी। मुझे इस आदेश से लगभग नफरत है, सिर्फ इसलिए कि मैं इसे गलती से बहुत अधिक उपयोग करता हूं।
ब्रैडलीस 7

9
q / और q? अपने खोज पैटर्न के लिए एक समान काम करने के लिए इस्तेमाल किया जा सकता है।
bpw1621

5
हिटिंग <Cf> के बाद: या / (या किसी भी समय आप कमांड मोड में हैं) वही इतिहास मेनू लाएगा। तो आप q को रीमैप कर सकते हैं: यदि आप इसे गलती से मारते हैं और अभी भी इस भयानक मोड तक पहुंचते हैं।
idbrii 19

82

उदाहरण के लिए विम एक URL खोलेगा

vim http://stackoverflow.com/

जब आपको संदर्भ के लिए किसी पृष्ठ के स्रोत को खींचने की आवश्यकता होती है तो अच्छा लगता है।


2
मेरे लिए इसने स्रोत नहीं खोला; इसके बजाय यह जाहिरा तौर पर इस्तेमाल किए गए पृष्ठ को बफर में डंप करने के लिए एलिंक का उपयोग करता है, और फिर उसने खोला।
इवान वुइक्का

इस कमांड को अंजाम देने में त्रुटि है
Dzung Nguyen

5
अंत में एक स्लैश के साथ बेहतर काम करता है। साफ़ - सुथरा तरीका!
थॉमस

@Vdt: यदि आपने अपनी त्रुटि पोस्ट की है तो यह उपयोगी होगा। यदि यह एक है: " त्रुटि (netrw) न तो wget और न ही भ्रूण कमांड उपलब्ध है" तो आपको स्पष्ट रूप से अपने PATH पर्यावरण चर से उन उपकरणों में से एक को उपलब्ध कराने की आवश्यकता है।
आइजैक नेक्विटेपस

मुझे यह एक विशेष रूप से उपयोगी लगता है जब लोग एक पेस्ट सेवा के लिए लिंक भेजते हैं और एक सिंटैक्स हाइलाइटिंग का चयन करना भूल जाते हैं, मुझे आमतौर पर "और कच्चे" को जोड़ने के बाद लिंक को विम में खोलना पड़ता है।
डेट्रायटर

68

मैक्रोज़ अन्य मैक्रोज़ को कॉल कर सकते हैं, और स्वयं भी कॉल कर सकते हैं।

उदाहरण के लिए:

qq0dwj@qq@q

... फ़ाइल के अंत तक हर लाइन से पहला शब्द हटा देगा।

यह काफी सरल उदाहरण है, लेकिन यह विम की एक बहुत शक्तिशाली विशेषता को दर्शाता है


2
मुझे नहीं पता था कि मैक्रों खुद को दोहरा सकते हैं। ठंडा। नोट: qx रजिस्टर x में रिकॉर्डिंग शुरू करता है (वह रजिस्टर q के लिए qq का उपयोग करता है)। 0 लाइन की शुरुआत के लिए चलती है। dw एक शब्द को नष्ट करता है। j एक रेखा से नीचे जाती है। @q मैक्रो को फिर से चलाएगा (लूप को परिभाषित करते हुए)। लेकिन आप अंतिम "क्यू" के साथ रिकॉर्डिंग समाप्त करना भूल गए, फिर वास्तव में @q टाइप करके मैक्रो चलाएं।
किमबॉल रॉबिन्सन

2
मुझे लगता है कि यह जानबूझकर, एक नेस्टेड और पुनरावर्ती मैक्रो के रूप में है।
यकतुला


6
इसे पूरा करने का एक और तरीका यह है कि मैक्रो को रजिस्टर में दर्ज किया जाए जो एक लाइन में कुछ परिवर्तन करता है, फिर अलसी वी के साथ लाइनों का एक गुच्छा हाइलाइट करता है और :normal! @aआपके चयन में हर लाइन पर मैक्रो को लागू करने के लिए टाइप करता है।
नेथन लॉन्ग

मुझे यह पोस्ट Googling recursive VIM macros मिला। मुझे VIM प्रक्रिया को मारने के अलावा मैक्रो को रोकने का कोई तरीका नहीं मिल सका।
डॉटनोहेन

55

मान लें कि आपके पास पर्ल और / या रूबी का समर्थन संकलित है, :rubydoऔर वर्तमान पंक्ति के पाठ के :perldoसाथ $_(न्यूलाइन को घटाकर) एक सीमा में प्रत्येक लाइन पर एक रूबी या पर्ल वन-लाइनर चलाएगा । हेरफेर करने $_से उस लाइन का टेक्स्ट बदल जाएगा।

आप इसका उपयोग कुछ ऐसी चीजों को करने के लिए कर सकते हैं जो स्क्रिप्टिंग भाषा में करना आसान है लेकिन विम बिल्डरों का उपयोग करके इतना स्पष्ट नहीं है। उदाहरण के लिए एक पंक्ति में शब्दों के क्रम को उलटने के लिए:

:perldo $_ = join ' ', reverse split

हर पंक्ति के अंत में 8 अक्षरों (AZ) का एक यादृच्छिक स्ट्रिंग सम्मिलित करने के लिए:

:rubydo $_ += ' ' + (1..8).collect{('A'..'Z').to_a[rand 26]}.join

आप एक समय में एक पंक्ति में अभिनय करने तक सीमित हैं और आप नई सूची नहीं जोड़ सकते।


क्या होगा यदि मैं केवल एक निर्दिष्ट रेखा पर चलना चाहता हूं? या कुछ चयनित लाइनें?
सुजॉय

5
आप इसे किसी भी अन्य कमांड की तरह रेंज दे सकते हैं। उदाहरण के लिए: 1,5perldo केवल 1-5 लाइनों पर काम करेगा।
ब्रायन कारपर

क्या आप $ _ + = '\ nNEWLINE !!!' कर सकते हैं वर्तमान के बाद एक नई शुरुआत पाने के लिए?
ग्रेग

अफसोस की बात है, यह सिर्फ लाइन के अंत में एक कायरता नियंत्रण चरित्र जोड़ता है। आप फिर एक विम खोज का उपयोग कर सकते हैं / उन सभी नियंत्रण पात्रों को बदलकर वास्तविक नईलाइनों में बदल सकते हैं।
ब्रायन कारपर

3
इसी तरह, pydoऔर py3doआप आवश्यक समर्थन में संकलित किया है, तो अजगर के लिए काम करते हैं।
Derecho

54

^ O और ^ I

पुराने / नए पद पर जाएं। जब आप फ़ाइल के माध्यम से आगे बढ़ रहे हैं (खोज, आगे बढ़ते आदेश आदि) तो इन "कूदता" को हटा दें, ताकि आप इन छलांगों को पीछे की ओर दोहरा सकें (^ O - O पुराने के लिए) और आगे (^ I - कीबोर्ड पर I के ठीक बगल में )। मुझे यह बहुत उपयोगी लगता है जब कोड लिखना और बहुत सी खोजें करना।

गी

उस स्थिति पर जाएं जहां पिछले मोड को सम्मिलित किया गया था। मैं खुद को अक्सर संपादन करता हूं और फिर कुछ खोजता हूं। संपादन स्थान पर वापस लौटने के लिए gi दबाएँ।

gf

फ़ाइल के नाम पर कर्सर रखें (जैसे हेडर फ़ाइल शामिल करें), gf दबाएं और फ़ाइल खोली जाए

GF

gf के समान है, लेकिन "[फ़ाइल का नाम]: [पंक्ति संख्या]" प्रारूप को पहचानता है। जीएफ दबाने पर [फ़ाइल नाम] खुल जाएगा और कर्सर को [लाइन नंबर] पर सेट कर देगा।

^ पी और ^ एन

संपादन के दौरान स्वतः पूर्ण पाठ (^ P - पिछला मैच और ^ N अगला मैच)

^ एक्स ^ एल

जबकि संपादन एक ही पंक्ति (प्रोग्रामिंग के लिए उपयोगी) को पूरा करता है। आप कोड लिखते हैं और फिर आप याद करते हैं कि आपके पास फ़ाइल में कहीं एक ही कोड है। बस ^ X ^ L दबाएं और पूरी लाइन पूरी हो जाए

^ एक्स ^ एफ

पूरा फ़ाइल नाम। आप लिखते हैं "/ etc / pass" हम्म। आप फ़ाइल का नाम भूल गए। बस ^ ^ ^ F दबाएं और फ़ाइल नाम पूरा हो गया है

^ जेड या: श

अस्थायी रूप से शेल पर जाएं। यदि आपको एक त्वरित कोसने की आवश्यकता है:

  • प्रेस ^ Z (पृष्ठभूमि में vi रखने के लिए) मूल शेल पर वापस जाने के लिए और वापस आने के लिए fg दबाएँ
  • प्रेस: ​​उप शेल पर जाने के लिए और ^ वापस वापस करने के लिए ^ D / बाहर निकलें दबाएँ

^X^Fमेरे पालतू जानवरों के साथ पीवनाम है कि फिलामेंट्स में =संकेत शामिल होते हैं, जिससे यह कई चीजों में सड़े हुए काम करता है (इनी फाइलें, मेकफाइल्स)। मैं का उपयोग se isfname-==समाप्त करने के लिए है कि उपद्रव
sehe

3
+1 बिल्ट-इन स्वतः पूर्ण बस वहीं बैठा है जिसकी खोज की जा रही है।
joeytwiddle

48
" insert range ip's
"
"          ( O O )
" =======oOO=(_)==OOo======

:for i in range(1,255) | .put='10.0.0.'.i | endfor

2
मैं यह नहीं देखता कि यह (मजाक के जवाब की तरह दिखने के अलावा) क्या अच्छा है। क्या कोई और मुझे बता सकता है?
रयान एडवर्ड्स

2
: "endfor रेंज (1,255) में मैं के लिए | | .put = '10 .0.0 'मैं।।" खुला vim और उसके बाद करना
codygman

2
@RyanEdwards भरने / आदि / मेजबान हो सकता है
रुस्लान

26
यह एक शानदार जवाब है। IP पते बनाने के बारे में बिट नहीं है, लेकिन बिट जिसका अर्थ है कि VIM कमांड में लूप के लिए उपयोग कर सकते हैं
14

4
बिना पूर्व विधा के:i10.0.0.1<Esc>Y254p$<C-v>}g<C-a>
ब्लैककप

47

यह एक अलग कूटबन्धन के साथ वर्तमान फ़ाइल को फिर से खोलने के लिए एक अच्छी चाल है:

:e ++enc=cp1250 %:p

उपयोगी जब आपको विरासत एन्कोडिंग के साथ काम करना होता है। समर्थित एन्कोडिंग को नीचे दी गई तालिका में सूचीबद्ध किया गया है encoding-values(देखें help encoding-values)। इसी तरह की चीज भी काम करती है ++ff, ताकि आप पहली बार गलत तरीके से देखने पर विंडोज / यूनिक्स लाइन के साथ फाइल को दोबारा खोल सकें help ff


कभी इस तरह की चीज़ का इस्तेमाल नहीं करना था, लेकिन हम अपनी शस्त्रागार में जरूर जोड़ेंगे ...

महान टिप, धन्यवाद। बोनस अंक के लिए, सामान्य मान्य एन्कोडिंग की सूची जोड़ें।
एड्रियानो वरोली पियाज़ा

2
मैंने आज इसका उपयोग किया है, लेकिन मुझे लगता है कि मुझे "%: p" निर्दिष्ट करने की आवश्यकता नहीं थी; केवल फ़ाइल खोलना और: e ++ enc = cp1250 पर्याप्त था। I
इवान वुज़िका

होगा: एन्कोडिंग = cp1250 का एक ही प्रभाव है?
लाज

1
`: ई + ब% '(नई-पंक्तियों का कोई munging) द्विआधारी मोड में फिर से खोलने के लिए इसी तरह उपयोगी है
intuited

47

टाइपिंग == ऊपर लाइन के आधार पर वर्तमान लाइन के इंडेंटेशन को सही करेगा।

वास्तव में, आप किसी भी आंदोलन कमांड के बाद एक = संकेत कर सकते हैं। = {आंदोलन}

उदाहरण के लिए, आप% आंदोलन का उपयोग कर सकते हैं जो मिलान ब्रेसिज़ के बीच चलता है। निम्नलिखित कोड में {} पर कर्सर रखें:

if (thisA == that) {
//not indented
if (some == other) {
x = y;
}
}

और तुरंत पाने के लिए =% दबाएं :

if (thisA == that) {
    //not indented
    if (some == other) {
        x = y;
    }
}

वैकल्पिक रूप से, आप कर सकते हैं = {{ कोड ब्लॉक के भीतर, अपने आप को {चरित्र पर सही स्थिति के बजाय।


हम्म, मैं इस इंडेंटेशन के बारे में नहीं जानता था।
एहतेश चौधरी

कोई जरूरत नहीं है, आमतौर पर, ब्रेसिज़ पर वास्तव में होने के लिए। अक्सर सोचा कि मैं सिर्फ =}या सिर्फ vaBaB=इसलिए कि यह कम निर्भर है। इसके अलावा, v}}:!astyle -bjमेरे कोड शैली बेहतर से मेल खाता है, लेकिन मैं एक साधारण के साथ अपनी शैली में वापस प्राप्त कर सकते हैं%!astyle -aj
sehe

7
gg=Gकिसी चीज में चिपकाने पर काफी साफ-सुथरा होता है।
कियारास

संबंधित: विम एसई पर
पुनः इंडेंटिंग

@kyrias ओह, मैं इसे पसंद कर रहा हूं ggVG=
ब्रैडेन बेस्ट

42
imap jj <esc>

7
फिर आप jj कैसे टाइप करेंगे? : पी
हैन

6
आप कितनी बार jj टाइप करते हैं? अंग्रेजी में कम से कम?
ojblass

50
मैंने कैप्सलॉक को एस्क के बजाय रीमेक किया, क्योंकि यह एक अन्यथा बेकार कुंजी है। हालांकि मेरी मैपिंग ओएस व्यापक थी, इसलिए इसे गलती से मारने की चिंता न करने का अतिरिक्त लाभ है। एकमात्र दोष यह है कि लोगों को अपने लोगों पर ध्यान देना चाहिए। :)
एलेक्स

7
@ एलेक्स: निश्चित रूप से, कैप्सलॉक मृत्यु है। "रुको, wtf? ओह, वह ZZ था? .... बकवास।"
intuited

5
@ojblass: सुनिश्चित करें कि कितने लोगों को विम में कभी सही matlab कोड है, लेकिन ऐसा नहीं है iiऔर jjआमतौर पर, काउंटर चर के लिए उपयोग किया जाता है, क्योंकि iऔर jजटिल संख्या के लिए आरक्षित हैं।
ब्रायनमर्न्स

37

आइए देखते हैं कुछ बहुत छोटे आईडीई संपादक कॉलम ट्रांसपोजिशन करते हैं।

:%s/\(.*\)^I\(.*\)/\2^I\1/

व्याख्या

\(और रेगेक्स-लैंड में सामान \)को कैसे याद रखना है । और \1, \2आदि याद किए गए सामान को पुनः प्राप्त करना है।

>>> \(.*\)^I\(.*\)

सब कुछ ^I(टैब) और उसके बाद सब कुछ याद रखें ।

>>> \2^I\1

उपरोक्त सामान को "2 सामान जिसे आपने याद किया था" को "1 सामान जिसे आपने याद किया था" के साथ बदलें - अनिवार्य रूप से एक स्थानान्तरण कर रहा है।


4
एक-दूसरे के साथ टैब-अलग कॉलम (अलग-अलग मध्यस्थ, यह सब regex है) की एक जोड़ी को स्विच करता है।
अराजकता

39
यह सिर्फ एक रेगीक्स है; बहुत सारे IDE में regex सर्च-एंड-रिप्लेसमेंट है।
rlbond

7
@ सर्बोंड - यह नीचे आता है कि आईडीई में रेगेक्स इंजन कितना अच्छा है। विम के रेग्जेस बहुत शक्तिशाली हैं; दूसरों .. इतना कभी कभी नहीं।
रोमन्दास

3
* लालची होगा, इसलिए यह रेक्सक्स मानता है कि आपके पास सिर्फ दो कॉलम हैं। यदि आप चाहते हैं कि इसका उपयोग नॉनग्रैडी उपयोग के बजाय {-} के बजाय करें (देखें: {} गुणक पर अधिक जानकारी के लिए गैर-लालची की मदद करें)
किमबॉल रॉबिन्सन

4
यह वास्तव में एक बहुत ही सरल रेगेक्स है, यह केवल समूह कोष्ठक से बच रहा है जो इसे जटिल दिखता है।
mk12

30

फ़ाइल एक्सप्लोरर फ़ाइलों को दिखाने के लिए खोलने के लिए (ऋण) किसी भी समय - "" नहीं वास्तव में एक अंधेरे रहस्य, लेकिन मैं अपने .vimrc फ़ाइल में निम्न मानचित्रण डाल करने के लिए, तो मैं हिट कर सकते हैं की तरह एक मैं सिर्फ संपादित करने के लिए आसन्न । फ़ाइल एक्सप्लोरर में, मैं एक और हिट कर सकता हूं "-" एक निर्देशिका को स्थानांतरित करने के लिए, एक जटिल निर्देशिका संरचनाओं की निर्बाध ब्राउज़िंग प्रदान करता है (जैसे कि आजकल एमवीसी फ्रेमवर्क द्वारा उपयोग किए जाने वाले)।

map - :Explore<cr>

ये किसी के लिए भी उपयोगी हो सकते हैं। मुझे स्क्रीन को स्क्रॉल करना और उसी समय कर्सर को आगे बढ़ाना पसंद है:

map <c-j> j<c-e>
map <c-k> k<c-y>

टैब नेविगेशन - मुझे टैब पसंद हैं और मुझे उनके बीच आसानी से जाने की आवश्यकता है:

map <c-l> :tabnext<enter>
map <c-h> :tabprevious<enter>

केवल मैक ओएस एक्स पर: सफारी की तरह टैब नेविगेशन:

map <S-D-Right> :tabnext<cr>
map <S-D-Left> :tabprevious<cr>

तुम भी उपयोग कर रहा विम के भीतर ही फ़ाइलें ब्राउज़ कर सकते हैं,: अन्वेषण
रोमन Plášil

हाय रोमन, यह वही है जो यह मैपिंग करता है, लेकिन इसे "हॉट की" को असाइन करता है। :)
KKovacs

27

मुझे like सुडो बैश ’का इस्तेमाल करना पसंद है, और मेरे सिसादमिन को इससे नफरत है। उन्होंने 'सुडो' को बंद कर दिया, इसलिए इसे केवल मुट्ठी भर कमांड (ls, chmod, chown, vi, etc) के साथ इस्तेमाल किया जा सकता था, लेकिन मैं वैसे भी रूट शेल प्राप्त करने के लिए विम का उपयोग करने में सक्षम था:

bash$ sudo vi +'silent !bash' +q
Password: ******
root#

9
FWIW, sudoedit (या sudo -e) विशेषाधिकार प्राप्त फ़ाइलों को संपादित करता है लेकिन आपके संपादक को आपके सामान्य उपयोगकर्ता के रूप में चलाता है।
RJHunter

12
हाँ ... मैं भी आपसे घृणा करता हूँ;) आपको केवल एक रूट शेल की आवश्यकता होनी चाहिए, जब तक कि आप पहले से ही बहुत अधिक कमांड चलाने की आदत में न हों, जिसका अर्थ है कि आपकी अनुमतियाँ सभी खराब हो चुकी हैं।
वी आर ऑल मोनिका

5
आपका सीसादीन भी आपको जड़ क्यों देता है? : D
d33tah

26

अक्सर, मुझे संपादन करते समय वर्तमान निर्देशिकाओं को बदलना पसंद है - इसलिए मुझे पथ कम निर्दिष्ट करना होगा।

cd %:h

यह क्या करता है? और क्या यह ऑटिचर्ड के साथ काम करता है?
लियोनार्ड

2
मुझे लगता है कि यह ऑटोचेयर को अस्थायी रूप से ओवरराइड करेगा (जब तक कि आपने बफ़र्स को फिर से स्विच नहीं किया है)। मूल रूप से, यह निर्देशिका को वर्तमान फ़ाइल की रूट निर्देशिका में बदल देता है। यह मुझे ऑटोचैड की तुलना में थोड़ा अधिक मैनुअल नियंत्रण देता है।
अपराह्न

1
: autochdir सेट करें। यह भी समान कार्यक्षमता प्रदान करता है और यह वर्तमान निर्देशिका को बफर में फाइल में बदल देता है
नागा किरण

25

जब मैं किसी प्रोजेक्ट पर काम करता हूं तो कई बार कई विंडो का उपयोग करता हूं और कभी-कभी मुझे उनका आकार बदलने की जरूरत होती है। यहाँ मेरा उपयोग है:

map + <C-W>+
map - <C-W>-

ये मैपिंग वर्तमान विंडो के आकार को बढ़ाने और घटाने की अनुमति देते हैं। यह काफी सरल है लेकिन यह तेज है।


16
Ctrl-W = भी है, जो विंडोज़ को समान चौड़ाई देता है।
बिल लिंच

2
मत भूलो कि आप वीम में कई बार एक क्रिया करने के लिए संख्याओं को पूर्व निर्धारित कर सकते हैं। तो वर्तमान खिड़की की ऊँचाई को 8 लाइनों द्वारा विस्तारित करने के लिए: 8 <CW> +
joeytwiddle

23

अस्पष्ट सुविधा नहीं है, लेकिन बहुत उपयोगी और समय की बचत है।

यदि आप अपने खुले बफ़र्स, टैब, मार्कर और अन्य सेटिंग्स का एक सत्र बचाना चाहते हैं, तो आप निम्नलिखित जारी कर सकते हैं:

mksession session.vim

आप अपने सत्र का उपयोग करके खोल सकते हैं:

vim -S session.vim

5
आप :so session.vimविम के अंदर भी कर सकते हैं ।
टैंकरस्मैश

22
:r! <command>

बाहरी कमांड के आउटपुट को बफर में पेस्ट करता है।

कुछ गणित करें और पाठ में सीधे परिणाम प्राप्त करें:

:r! echo $((3 + 5 + 8))

Makefile लिखते समय संकलित करने के लिए फ़ाइलों की सूची प्राप्त करें:

:r! ls *.c

इस तथ्य को मत देखो कि आप विकिपीडिया पर पढ़ते हैं, क्या यह सीधे आपके द्वारा लिखे गए दस्तावेज़ में चिपकाया जाता है:

:r! lynx -dump http://en.wikipedia.org/wiki/Whatever

14
^ डालने मोड में आर = 3 + 5 + 8 आपको कम कीस्ट्रोक्स के साथ पाठ में अभिव्यक्ति का मूल्य (3 + 5 + 8) डालने देगा।
सुधांशु

मैं वर्तमान से भिन्न बफर में परिणाम / आउटपुट कैसे प्राप्त कर सकता हूं?
dcn


21

जल्दी से अपने बफर ROT13 के लिए मानचित्र F5:

map <F5> ggg?G``

आप इसे बॉस कुंजी :) के रूप में उपयोग कर सकते हैं।


14
मुझे नहीं पता कि आप क्या लिख रहे हैं ... लेकिन निश्चित रूप से, मेरे बॉस को अधिक उत्सुकता होगी जब उन्होंने मुझे ROT13
जंबल

या अपने दोस्तों को बिगाड़ने के लिए nmap i ggg?G`` :। या शैतानी nmap i ggg?G``i:!
रोमियो

1
@romeovs 2nd एक अनंत लूप है, nnoremap का उपयोग करें
अमित गोल्ड

19

मैंने अभी इसे NSFAQ के माध्यम से पाया :

कोड के टिप्पणी ब्लॉक।

CTRL-V मारकर ब्लॉकवाइज़ विज़ुअल मोड दर्ज करें।

उस ब्लॉक को चिह्नित करें जिसे आप टिप्पणी करना चाहते हैं।

हिट I (पूंजी I) और लाइन की शुरुआत में अपनी टिप्पणी स्ट्रिंग दर्ज करें। (// C ++ के लिए)

ईएससी को हिट करें और चयनित सभी पंक्तियों में // सामने की ओर लाइन होगी।


मैंने रूबी में कोड के एक ब्लॉक पर टिप्पणी करने के लिए # जोड़ा। मैं इसे पूर्ववत कैसे करूं?
नीरज सिंह

3
आप बस ctrl + v को फिर से हिट कर सकते हैं, // "s और हिट x को" असम्बद्धता "पर चिह्नित कर सकते हैं
nos

6
मैं इसके लिए NERDCommenter का उपयोग करता हूं।
ZyX

1
कमेंट आउट कोड शायद सबसे खराब प्रकारों में से एक है जिसे आप संभवतः अपने कोड में डाल सकते हैं। कमाल ब्लॉक डालने के लिए बेहतर उपयोग हैं।
ब्रैडेन बेस्ट

1
@Pie क्योंकि बाहर कोड टिप्पणी मृत कोड है । मृत कोड कोई उपयोगी उद्देश्य नहीं देता है और अव्यवस्था पैदा करता है। आपको लगता है कि आप कोड को संरक्षित कर रहे हैं जिसे आप बाद में वापस लाना चाहते हैं, लेकिन हमेशा एक बेहतर तरीका होता है। आप अपने पूर्ववत इतिहास का उपयोग कर सकते हैं, आप फ़ाइल को धोखा दे सकते हैं, या आप गिट का उपयोग कर सकते हैं, जिसमें यह कार्यक्षमता ( git checkout) में निर्मित है । ब्लॉक इंसर्ट के बेहतर उपयोग के लिए, कोई भी सेट-इन-स्टोन नहीं हैं। जब भी आप एक से अधिक वर्णों को एक ही स्थान पर सम्मिलित करना चाहते हैं, तो आप इसका उपयोग करते हैं।
ब्रैडेन बेस्ट

17

मैं किसी भी पाठ संपादन के बारे में विम का उपयोग करता हूं, इसलिए मैं अक्सर कॉपी और पेस्ट का उपयोग करता हूं। समस्या यह है कि डिफ़ॉल्ट रूप से विम अक्सर पेस्ट के माध्यम से आयातित पाठ को विकृत कर देगा। इसे रोकने का तरीका उपयोग करना है

:set paste

अपने डेटा में चिपकाने से पहले। यह इसे गड़बड़ करने से रखेगा।

ध्यान दें कि आपको :set nopasteऑटो-इंडेंटेशन को पुनर्प्राप्त करने के लिए जारी करना होगा । पूर्व-स्वरूपित पाठ को चिपकाने के वैकल्पिक तरीके क्लिपबोर्ड रजिस्टर ( *और +) हैं, और :r!catआपको ^ डी के साथ चिपके हुए टुकड़े को समाप्त करना होगा।

यह कभी-कभी एक उच्च विपरीत रंग योजना को चालू करने के लिए भी सहायक होता है। इसके साथ किया जा सकता है

:color blue

मैंने देखा है कि यह मेरे द्वारा उपयोग किए जाने वाले विम के सभी संस्करणों पर काम नहीं करता है, लेकिन यह अधिकांश पर करता है।


10
"विकृति" हो रही है क्योंकि आपके पास कुछ प्रकार के स्वचालित इंडेंटेशन सक्षम हैं। विकल्प के set pasteलिए एक कुंजी का उपयोग करना या उसे निर्दिष्ट करना pastetoggleइस के आसपास काम करने का एक सामान्य तरीका है, लेकिन उसी प्रभाव set mouse=aको तब तक प्राप्त किया जा सकता है, जब विम को पता चले कि पाठ की बाढ़ माउस द्वारा ट्रिगर किया गया पेस्ट है।
जामसेन

1
यदि आपने gvim इंस्टॉल किया है तो आप अक्सर (हालांकि यह इस बात पर निर्भर करता है कि आपके विकल्प आपके distro कंपाइल के साथ क्या करते हैं) * x क्लिपबोर्ड को vim से सीधे * register के माध्यम से उपयोग करते हैं। उदाहरण के लिए "*pX xlipboard से चिपकाने के लिए । (यह टर्मिनल विम से भी काम करता है, यह सिर्फ इतना है कि अगर आपको अलग-अलग हो तो आपको gvim पैकेज की आवश्यकता हो सकती है)
kyrias

2
रिकार्ड के लिए @kyrias, *है PRIMARY( "मध्यम" पर क्लिक करें) रजिस्टर। क्लिपबोर्ड है+
ब्रेडन बेस्ट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.