निकटतम समकक्ष ( "सबसे करीब", नहीं "सटीक") ST2 के लिए Ctrl+ Pएक प्लगइन कहा जाता है, के लिए तैयार ... मिलता है CtrlP । इसी तरह के अन्य प्लगइन्स हैं जैसे कमांड-टी या फ़ज़ीफ़ाइंडर ।
मैं CtrlP का उपयोग करता हूं और मुझे यह पसंद है लेकिन मैं "प्लगइन-फ्री" जाने के आपके निर्णय का तहे दिल से समर्थन करता हूं। यह जाने का सबसे आसान तरीका नहीं है, लेकिन यह लंबे समय में भुगतान करेगा।
फाइलें खोलना
फ़ाइल खोलने का सबसे मूल तरीका है :e /path/to/filename। शुक्र है, आपको टैब-पूर्ण और वाइल्डकार्ड मिलते हैं: क्लासिक *और एक विशेष **, जो "किसी भी उपनिर्देशिका" के लिए खड़ा है।
उस सभी को मिलाकर, आप यह कर सकते हैं:
:e **/*foo<Tab>
fooकार्य निर्देशिका के तहत उनके नाम वाली सभी फाइलों को चुनने के लिए या:
:e **/*foo/*bar<Tab>
barकिसी भी उपनिर्देशिका के तहत उनके नाम वाली सभी फाइलों को उसके नाम से चुनने के लिए foo, कहीं भी काम करने वाली निर्देशिका के तहत चुनें।
बेशक, कि के लिए काम करता है :tabe[dit], :sp[lit]और :vs[plit], भी।
उन आदेशों को एक फ़ाइल तक सीमित किया गया है, हालांकि। :nextएकाधिक फ़ाइलों को खोलने के लिए उपयोग करें :
:next **/*.js
और देख लो :help arglist।
बफ़र्स के बीच कूदते हुए
:b[uffer] बुनियादी बफर-स्विचिंग कमांड है:
:b4 " switch to buffer number 4
:bn " switch to next buffer in the buffer list
:bp " switch to previous buffer in the buffer list
:bf " switch to first buffer in the buffer list
:bl " switch to last buffer in the buffer list
:b foo<Tab> " switch by buffer name with tab-completion
:b# " switch to the alternate file
ध्यान दें कि इनमें से कई कमांड और उनके रिश्तेदार एक गिनती स्वीकार करते हैं।
:lsआदेश आप भरी हुई बफ़र्स की एक सूची से पता चलता है। यह थोड़ा "विशेष" है, हालांकि: बफ़र्स को एक नंबर असाइन किया जाता है जब वे बनाए जाते हैं तो आपके पास एक सूची हो सकती है जो दिखता है जैसे 1 2 5कि आप बफ़र्स हटाते हैं। यह थोड़ा अजीब है, हाँ, और यह एक बफर के लिए स्विच कर रहा है अपनी संख्या से थोड़ा परेशान है। आंशिक नाम :b foo<Tab>या साइकलिंग द्वारा स्विचिंग को प्राथमिकता दें :bn :bp।
वैसे भी, यहाँ एक कूल मैपिंग है जो सभी लोड किए गए बफ़र्स को सूचीबद्ध करता है और आपके लिए संकेत को पॉप्युलेट करता है, आपके लिए एक बफर की संख्या टाइप करने और प्रेस करने के लिए इंतजार कर रहा है <enter>:
nnoremap gb :ls<CR>:b<Space>
इस मानचित्रण के साथ, दूसरे बफर पर स्विच करना उतना ही सरल है:
gb
(quickly scanning the list)
3<CR>
या:
gb
(quickly scanning the list)
foo<tab><CR>
यह विचार बिरुई के विम इन्फोग्राफिक्स के संग्रह से ली गई छवि से आया है :

विम में भी <C-^>(या <C-6>कुछ कीबोर्ड पर) है- सामान्य मोड के :b#बराबर- वर्तमान बफ़र और पिछले एक के बीच कूद। यदि आप अक्सर दो बफ़र्स के बीच वैकल्पिक करते हैं, तो इसका उपयोग करें।
सभी बफ़र्स के बारे में पढ़ें :help buffers।
घोषणा पर जाएं
एक फ़ाइल के भीतर, आप उपयोग कर सकते हैं gdया gD।
एक परियोजना के भीतर, विम का "टैग" फीचर आपका दोस्त है लेकिन आपको ctags या cscope जैसे बाहरी कोड इंडेक्सर की आवश्यकता होगी। सबसे बुनियादी आज्ञाओं हैं :tag fooऔर <C-]>एक विधि नाम पर कर्सर के साथ। दोनों उपकरण अच्छी तरह से विम में एकीकृत हैं: देखें :help tags, :help ctagsऔर :help cscope।
इसके लायक होने के लिए, मैं एक परियोजना के भीतर स्थानांतरित करने के लिए बड़े पैमाने पर टैग नेविगेशन का उपयोग करता हूं ( ज्यादातर CtrlP :CtrlPTagऔर :CtrlPBufTagकमांड का उपयोग करके , लेकिन बिट -इन वाले भी) और मेरा पसंदीदा "जेनेरिक" बफर स्विचिंग विधि नाम से है।
आपके कॉन्फिगरेशन को तैनात करना
बहुत सारे विम उपयोगकर्ताओं ने अपने कॉन्फ़िगरेशन को संस्करण नियंत्रण में रखा है जो एक नई मशीन पर अपने स्वयं के कॉन्फ़िगरेशन को स्थापित करने के लिए बहुत तेज और आसान बनाता है । इसके बारे में सोचो।
संपादित करें
कुछ महीने पहले, मुझे एक पुरानी मशीन के साथ रिमोट मशीन पर काम करना पड़ा। मैं एक उचित विम स्थापित कर सकता था और अपने स्वयं के प्रिय विन्यास को क्लोन कर सकता था लेकिन मैंने "देखा को तेज" करने के लिए, इस बार प्रकाश यात्रा करने का फैसला किया। मैंने जल्दी से एक न्यूनतावादी का निर्माण .vimrcकिया और आधे भूल गए देशी सुविधाओं के एक जोड़े को फिर से बनाया । उस टमटम के बाद, मैंने तय किया कि CtrlP उतना आवश्यक नहीं है और इससे छुटकारा पा लिया: देशी सुविधाएँ और कस्टम मैपिंग उतनी सेक्सी नहीं हैं, लेकिन वे बहुत निर्भरता के बिना काम पूरा करते हैं।
फाइलों के साथ जुगलबंदी
set path=.,**
nnoremap <leader>f :find *
nnoremap <leader>s :sfind *
nnoremap <leader>v :vert sfind *
nnoremap <leader>t :tabfind *
:findजैसे ही आप set pathसही रूप में एक महान आदेश है। मेरी सेटिंग्स के साथ, वर्तमान निर्देशिका के अंतर्गत, पुनरावर्ती ,ffoo<Tab>सभी फाइलें fooमिलेंगी। यह त्वरित, सहज और हल्का है। बेशक, मुझे उसी के पूरा होने और वाइल्डकार्ड से लाभ होता है जैसे कि :editऔर दोस्तों के साथ ।
इस प्रक्रिया को और भी तेज़ बनाने के लिए, निम्न मैपिंग मुझे प्रोजेक्ट के संपूर्ण भागों को छोड़ देने और वर्तमान फ़ाइल की निर्देशिका के तहत पुनरावृत्ति करने वाली फ़ाइलों को खोजने की अनुमति देती है:
nnoremap <leader>F :find <C-R>=expand('%:h').'/*'<CR>
nnoremap <leader>S :sfind <C-R>=expand('%:h').'/*'<CR>
nnoremap <leader>V :vert sfind <C-R>=expand('%:h').'/*'<CR>
nnoremap <leader>T :tabfind <C-R>=expand('%:h').'/*'<CR>
चेतावनी! pathविकल्प है अत्यंत शक्तिशाली। मेरे लिए ऊपर .,**मूल्य- आतिशबाजी लेकिन मैं जिन भाषाओं का उपयोग करता हूं उनमें मानक पुस्तकालय नहीं है। उचित मूल्य पर निर्भर करता है आपकी जरूरतों।
भैंस के साथ करतब दिखाने
set wildcharm=<C-z>
nnoremap <leader>b :buffer <C-z><S-Tab>
nnoremap <leader>B :sbuffer <C-z><S-Tab>
ऊपर दिए गए मैपिंग "वाइल्डमेनू" में उपलब्ध बफ़र्स को एक खाली संकेत के साथ सूचीबद्ध करते हैं, जिससे मुझे या तो मेनू को नेविगेट करने या <Tab>कुछ अक्षरों को टाइप <Tab>करने और फिर से सूची को संकीर्ण करने की अनुमति मिलती है । ऊपर फ़ाइल मैपिंग के साथ की तरह, प्रक्रिया त्वरित और लगभग घर्षण-कम है।
nnoremap <PageUp> :bprevious<CR>
nnoremap <PageDown> :bnext<CR>
वे मैपिंग खुद के लिए बोलते हैं।
टैग्स के साथ जुगलबंदी
nnoremap <leader>j :tjump /
यह मैपिंग पूरे शब्द खोज के बजाय रेगेक्स खोज का उपयोग करता है ताकि मैं ,jba<Tab>टैग खोजने के लिए कर सकूं foobarbaz()।
हां, फजी मैचिंग नशे की लत है, लेकिन आप इसके बिना उत्पादक हो सकते हैं। और लागत के एक अंश के लिए।
अधिक संपादित करें
अतिरिक्त सुझावों / चालों की एक जोड़ी ...
Wildmenu विकल्प
"वाइल्डमेनू", के साथ सक्षम set wildmenu, फ़ाइल / बफर नेविगेशन को आसान बनाता है। इसका व्यवहार विकल्पों के एक समूह द्वारा नियंत्रित किया जाता है जो जांच के लायक हैं:
wildmode विम को बताता है कि आप कैसे "वाइल्डमेनू" व्यवहार करना चाहते हैं:
set wildmode=list:full
wildignore सभी cruft को छानता है:
set wildignore=*.swp,*.bak
set wildignore+=*.pyc,*.class,*.sln,*.Master,*.csproj,*.csproj.user,*.cache,*.dll,*.pdb,*.min.*
set wildignore+=*/.git/**/*,*/.hg/**/*,*/.svn/**/*
set wildignore+=tags
set wildignore+=*.tar.*
wildignorecaseआपको fooखोजने और खोजने की अनुमति देता है Foo:
set wildignorecase
फ़ाइल के निशान
augroup VIMRC
autocmd!
autocmd BufLeave *.css normal! mC
autocmd BufLeave *.html normal! mH
autocmd BufLeave *.js normal! mJ
autocmd BufLeave *.php normal! mP
augroup END
मुझे हाल ही में यह रत्न किसी और में मिला है ~/.vimrc। जब भी आप बफर को छोड़ते हैं, तो यह कर्सर की सटीक स्थिति में एक फ़ाइल चिह्न बनाता है, ताकि आप जहां भी हों, 'Jनवीनतम जावास्क्रिप्ट बफर में कूद जाए। बहुत बढ़िया।