2009-09-19 14 views
9

मैं सी ++ या जावा में प्रोग्रामिंग कर रहा हूं। तो मैं विम संपादक का उपयोग करना चाहता हूं, क्योंकि यह बहुत लचीला है। मैंने सुना है कि मैं विम संपादक कॉन्फ़िगरक्या विम संपादक बहुत स्मार्ट है?

    वस्तु से
  1. परिभाषा करने के लिए वर्ग के नाम से परिभाषा
  2. को समारोह से जाने के लिए परिभाषा
  3. करने में सक्षम हो सकते हैं

Do हमारे पास कोई पेशेवर विम-एर है जो मुझे बता सकता है कि इसके लिए विम को कैसे कॉन्फ़िगर करना है? अग्रिम में धन्यवाद।

पीएस यदि पाठकों का मानना ​​है कि यह प्रश्न प्रोग्रामिंग से जुड़ा नहीं है, तो मैं कहूंगा कि यह प्रोग्रामिंग की गति में सुधार कर रहा है। तो यह प्रोग्रामर के लिए एक मदद है। तो कृपया इस सवाल को बंद न करें।

संपादित करें: मैं यह भी जानना चाहता हूं कि कोड पूर्ण होने के साथ कैसे काम करता है और कुछ ऑब्जेक्ट के लिए उपलब्ध विधियों की सूची को संकेत दे सकता है? यदि हां, तो मैं जानना चाहूंगा कि इन विकल्पों को कैसे कॉन्फ़िगर करना है?

+5

"पेशेवर विम-एर" द्वारा, क्या आपका मतलब है कि विम का उपयोग करने के लिए भुगतान किया जा रहा है? यह एक नौकरी है जिसे मैं पसंद करूंगा: पी –

उत्तर

11

जो आप खोज रहे हैं वह ctags और टैग/टैग फ़ाइलें है। Ctags (मैं एक्सबेरेंट सीटैग की अनुशंसा करता हूं) एक ऐसा प्रोग्राम है जो पहचानकर्ताओं के लिए स्रोत फ़ाइलों को स्कैन करता है और उन्हें एक फ़ाइल अनुक्रमणित करता है। कर्सर के नीचे टैग की परिभाषा पर कूदने के लिए आप ^] का उपयोग कर सकते हैं।

टैग फ़ाइल को कैसे ढूंढें vim को बताने के लिए कुछ अतिरिक्त विवरण हो सकते हैं; मुझे यकीन नहीं है कि वे क्या हैं। लेकिन यह सामान्य विचार है - अपने स्रोत कोड पर ctags चलाएं और फिर ^] का उपयोग करें।

वैकल्पिक रूप से, आप जीएनयू ग्लोबल को देखना चाहेंगे। यह थोड़ा और परिष्कृत है। लेकिन सीटीएजी आपके द्वारा वर्णित किए गए कार्यों को पूरा करेगा। vim में

+1

टैग फ़ाइल कहां कहने के लिए, टैग विकल्प का उपयोग करें। विवरण के लिए vim में "मदद 'टैग' टाइप करें। –

1

कोड: पूर्ण करने vim-स्क्रिप्ट के रूप में उपलब्ध है: http://www.vim.org/scripts/index.php

+1

संस्करण 7.0 और बाद वाले वर्शन आप ctrl-p, ctrl-n, और ctrl-x-ctrl-l जैसे कीस्ट्रोक संयोजनों का उपयोग करके सम्मिलित मोड में कोड के नाम और रेखाएं स्वतः पूर्ण कर सकते हैं। ऑनलाइन सहायता में सभी विवरण हैं। –

-1

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

2

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

रैपर आपको पूर्ण विम अनुकरण नहीं देता है लेकिन आप विम शॉर्टकट का उपयोग करके अपने कोड के चारों ओर उछाल सकते हैं और आप ग्रहण की किसी भी भलाई को खो नहीं सकते हैं।

+1

"सर्वोत्तम" के विभिन्न मूल्यों के लिए ... –

+0

यह वास्तव में "दुनिया" के विभिन्न मूल्यों के लिए है, लेकिन मैं आपका बिंदु देखता हूं! –

1

सामान्य रूप से ctags उत्तर है, जैसा कि माइकल ई ने कहा था। ctags *.c *.h एक प्रोजेक्ट के लिए एक साधारण शुरुआत है जिसमें एक निर्देशिका में सभी फाइलें हैं। फिर, जैसा कि माइकल ने कहा था, आप परिभाषा पर जाने के लिए ^] का उपयोग कर सकते हैं और^टी वापस जाने के लिए जहां से आप आए थे। ये वही कुंजी हैं जिनका उपयोग आप विम की सहायता के अंदर घूमने के लिए करते हैं।

जावा और सी ++ में आपके पास एक ही नाम के साथ एक से अधिक विधि हो सकती हैं। :tn अगले एक पर जाएगा, और :ts विकल्प सूचीबद्ध करेगा।

विम में कोड पूर्ण होने के लिए, मैं आमतौर पर^पी और^एन का उपयोग करता हूं। यह ग्रहण या एमएसवीसी के बराबर संदर्भ-संवेदनशील नहीं है, लेकिन यह आमतौर पर नौकरी करता है।

अन्य टूल्स जिन्हें आप उपयोग कर सकते हैं cscope और (बेशक) Emacs या ग्रहण हैं।

1

जैसा कि अन्य ने कहा है, आपको vi (m) के लिए एक अनुक्रमणिका फ़ाइल जेनरेट करने की आवश्यकता है।

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

यदि आप एक जीवित रहने के लिए जावा प्रोग्रामिंग करते हैं, तो अपने और अपने नियोक्ता को एक पक्ष करें और एक पावर टूल का उपयोग करना सीखें।

+3

vim 7.2 फ़्लोटिंग पॉइंट नंबरों का समर्थन करता है, इसलिए कैलकुलेटर की कोई आवश्यकता नहीं है :) – intuited

+1

दिलचस्प। मैं बस अनुमान लगा सकता हूं कि किसी संपादक को फ़्लोटिंग पॉइंट नंबरों की आवश्यकता क्यों होती है, इसलिए शायद यह एक विज्ञापन है, अनौपचारिक रूप से निर्दिष्ट, बग-सवार, आम लिस्प के आधे धीमे कार्यान्वयन के लिए बस एक कदम है? –

2

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

सीटीएजी के साथ, बस अपनी कोड निर्देशिका में "ctags" कमांड का उपयोग करें। यदि आपके पास निर्देशिकाओं का उत्तराधिकारी है, तो शीर्ष पर शुरू करें और नीचे दी गई सभी निर्देशिकाओं के माध्यम से "ctags -R" का उपयोग करें। परिणामी टैग फ़ाइल के रूप में उसी निर्देशिका में vim प्रारंभ करें और vim को स्वचालित रूप से ढूंढना और लोड करना चाहिए। जब किसी फ़ंक्शन या चर नाम पर कर्सर के साथ संपादक में, आप '^]' टाइप कर सकते हैं और vim को परिभाषा पर कूदना चाहिए।

इसी प्रकार, सीस्कोप के साथ, अधिक विस्तृत टैग जानकारी प्राप्त करने के लिए "cscope -b" या "cscope -b -R" का उपयोग करें। विम और सिस्को एक साथ काम करते हैं ताकि आपको अधिक जानकारी मिल सके जैसे पहचानकर्ता का उपयोग किया जाता है और जहां से एक समारोह कहा जाता है। मैक्रोज़ का एक सेट है जिसका उपयोग जानकारी तक पहुंचने के लिए किया जा सकता है। आप विम cscope सहायता जानकारी में मैक्रोज़ और उनके अर्थों को पा सकते हैं।

2

पिछली बार मैंने चेक किया था, बहुत समय पहले, ctags ठीक था, लेकिन यह कुछ पहचानकर्ताओं को याद करता था, और cscope में एक अधिक संपूर्ण खोज विकल्प था, लेकिन यह अभी भी कुछ पहचानकर्ताओं को याद करता है।

grep जो मैं पसंद करता हूं वह है। यह संपूर्ण है लेकिन अभी भी बहुत तेज़ है यदि स्रोत कोड आधार उचित आकार है या पीसी तेज़ है। आप इसे :grep के साथ vim से आवेदक कर सकते हैं। यह दिखाने के लिए कि मैंने इसे कॉन्फ़िगर किया है, यह मेरे अपने _vimrc का सरलीकृत संस्करण यहां दिया गया है। मैंने यह बताने के लिए टिप्पणी की कि कौन सी कुंजी क्या करती हैं।

" for Windows, replace with the location of `grep.exe' 
" not needed for Unix/Linux 
:set grepprg=c:\prog\cygwin\bin\grep.exe\ -n\ $*\ /dev/null 


:function! RecursiveSearchIdentifierUnderCursor() 
: sp 
: let grep_cmd = "silent grep -r \"\\<" . expand("<cword>") . "\\>\" *" 
: exe grep_cmd 
:endfunction 


" CTRL-backslash to search for the identifier (or "word") under the cursor 
" 
" an identifier is in the form "xxx_123_yyy" but something in the form 
" "xxx_123_yyy.aaa_999" would be two identifiers separated by a period 
" 
" 
" this basically executes: 
" 
"  :grep -r "\<identifier\>" * 
" 
" for whatever `identifier' the cursor happens to be over 
" 
" 
" to close the newly opened window, use: 
" 
"  :q 
" 
:map <C-\> :call RecursiveSearchIdentifierUnderCursor()<CR> 


" cursor up/down to move to the previous/next search result 
:map <Up> :cp<CR>zz 
:map <Down> :cn<CR>zz 


" jump up/down between horizontally split windows 
:map <PageUp> <C-W>k 
:map <PageDown> <C-W>j 


" move to the previous/next enclosing brace 
:map <Left> [{ 
:map <Right> ]} 


" move to the previous/next enclosing parenthesis 
:map <Home> [(
:map <End> ]) 


" move to the previous/next enclosing # preprocessor directive 
:map <Insert> [# 
:map <Del> ]# 

इसके अलावा, भूल नहीं है * (Shift-8) और # (Shift-3) आगे और पीछे की वर्तमान फ़ाइल के भीतर कर्सर के अंतर्गत वर्तमान पहचानकर्ता के लिए खोज करने के लिए। मुझे कोड के माध्यम से कूदते समय इन अमूल्य मिलते हैं, खासकर जब 'i' और 'j' जैसे छोटे चर नामों की खोज करते हैं जो अन्यथा पारंपरिक टेक्स्ट एडिटर में अंधेरे खोज में अन्य परिवर्तनीय नामों के हिस्सों से मेल खाते हैं।

यदि आप make का उपयोग करना चाहते हैं तो से :make भी आ सकते हैं। यह पहली संकलन त्रुटि पर रुक जाएगा, फिर आप vim के अंदर से फिर से निर्माण को संपादित और शुरू कर सकते हैं।

एक बार जब आप अपने कार्यों और कुंजी मैपिंग को सहज महसूस करते हैं, तो vim के साथ दोहराए जाने वाले प्रोग्रामिंग कार्यों को आसान बनाने के कई तरीके हैं।

संबंधित मुद्दे