पिछली बार मैंने चेक किया था, बहुत समय पहले, 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
के साथ दोहराए जाने वाले प्रोग्रामिंग कार्यों को आसान बनाने के कई तरीके हैं।
"पेशेवर विम-एर" द्वारा, क्या आपका मतलब है कि विम का उपयोग करने के लिए भुगतान किया जा रहा है? यह एक नौकरी है जिसे मैं पसंद करूंगा: पी –