मुझे नहीं पता कि 500 से अधिक संक्षिप्त तरीकों को प्रबंधित करने का सबसे अच्छा तरीका क्या है। शायद लंबी अवधि में, जैसा कि @statox ने समझाया, आप इस संख्या को कम करने के लिए स्निपेट पर एक नज़र डाल सकते हैं।
और यदि आप संक्षिप्त रूप से स्वतः पूर्ण करना चाहते हैं, तो आप निम्नलिखित कोड आज़मा सकते हैं:
augroup GetAbbrev
autocmd!
autocmd VimEnter * let s:abbrev_list = [] |
\ call substitute(join(readfile($MYVIMRC), "\n"), '\v%(^|\n)\s*i?%(nore)?ab%[brev]\s+%(%(\<expr\>|\<buffer\>)\s+){,2}(\k+)', '\=add(s:abbrev_list, submatch(1))', 'gn')
augroup END
set completefunc=CompleteAbbrev
function! CompleteAbbrev(findstart, base)
if a:findstart
return searchpos('\<\k', 'bcnW', line('.'))[1] - 1
else
return filter(copy(s:abbrev_list), 'v:val =~ "^" . a:base')
endif
endfunction
इसका उपयोग करने के लिए, आपको C-x C-u
एक संक्षिप्त नाम की शुरुआत के बाद हिट करना होगा ।
स्वतः पूर्ण चर को सेट करता है s:abbrev_list
जिसमें आपके सभी संक्षिप्ताक्षर होने चाहिए।
फ़ंक्शन CompleteAbbrev()
को कर्सर से पहले शब्द के आधार पर उम्मीदवारों की सूची वापस करनी चाहिए।
'completefunc'
विकल्प के मूल्य विम जो कॉल करने के लिए कार्य करते हैं जब आप हिट बताता है C-x C-u
।
ध्यान दें कि विकल्प बफर के लिए स्थानीय है, इसलिए आप अभी भी विभिन्न प्रकार के बफ़र्स में अन्य कार्यों का उपयोग कर सकते हैं, FileType
उदाहरण के लिए एक ऑटोकैम और घटना का उपयोग करना ।
:h complete-functions
फ़ंक्शन कैसे काम करता है, इसके बारे में अधिक जानकारी के लिए देखें ।
एक अन्य समाधान पर्यायवाची शब्दों को पूरा करने का उपयोग करना होगा। से :h i_^x^t
:
*i_CTRL-X_CTRL-T*
CTRL-X CTRL-T Works as CTRL-X CTRL-K, but in a special way. It uses
the 'thesaurus' option instead of 'dictionary'. If a
match is found in the thesaurus file, all the
remaining words on the same line are included as
matches, even though they don't complete the word.
Thus a word can be completely replaced.
For an example, imagine the 'thesaurus' file has a
line like this:
angry furious mad enraged
Placing the cursor after the letters "ang" and typing
CTRL-X CTRL-T would complete the word "angry";
subsequent presses would change the word to "furious",
"mad" etc.
Other uses include translation between two languages,
or grouping API functions by keyword.
इस समाधान का उपयोग करने के लिए, आपको 3 चीजें करनी होंगी:
{lhs}
एक समर्पित फ़ाइल के अंदर अपने सभी संक्षिप्त विवरण लिखें ।
उदाहरण के लिए, /home/user/mysynonyms.txt
। और उन्हें समान विषयों के आसपास समूहित करें।
विकल्प में इस फ़ाइल का पथ जोड़ें 'thesaurus'
:
set thesaurus+=/home/user/mysynonyms.txt
C-x C-t
किसी समूह के अंदर किसी भी नाम के नाम की शुरुआत के बाद मारो ।
उदाहरण के लिए, मान लें कि आपके पास निम्नलिखित संक्षिप्त विवरण हैं:
iab cfa CFuncA
iab cfb CFuncB
iab cfc CFuncC
iab jfa JavaFuncA
iab jfb JavaFuncB
iab jfc JavaFuncC
iab pfa PhpFuncA
iab pfb PhpFuncB
iab pfc PhpFuncC
आप उन्हें उस प्रोग्रामिंग भाषा के अनुसार समूहित कर सकते हैं जो वे संबंधित हैं।
अंदर /home/user/mysynonyms.txt
, आप लिखेंगे:
cpp cfa cfb cfc
php pfa pfb pfc
java jfa jfb jfc
अब, जब भी आप C-x C-t
एक संक्षिप्त नाम (या सिर्फ इसकी शुरुआत) के नाम पर हिट करते हैं, तो Vim को पॉपअप मेनू में, सभी संक्षिप्ताक्षरों को प्रदर्शित करना चाहिए जो एक ही पंक्ति में हैं।
यहाँ है कि यह कैसा दिखेगा:
ध्यान दें कि संक्षिप्तीकरण को समान वर्णों के साथ शुरू करने की आवश्यकता नहीं है, वे पूरी तरह से अलग हो सकते हैं। जब तक वे आपके समानार्थी फ़ाइल में एक ही पंक्ति पर हैं, विम सभी को दिखाएगा।
और आपको यह तय करने के लिए प्रोग्रामिंग भाषा का उपयोग करने की आवश्यकता नहीं है कि किस समूह ने संक्षिप्त नाम दिया है। आप उन्हें किसी भी सार्थक समानता / विषय / श्रेणी के अनुसार समूहित कर सकते हैं जो आपके मन में है।
इसलिए, जब आप एक विशिष्ट संक्षिप्त नाम भूल जाते हैं, तो आप श्रेणी के पहले अक्षरों को टाइप कर सकते हैं, हिट कर सकते हैं C-x C-t
और मेनू के अंदर संबंधित को चुन सकते हैं।
संपादित करें:
अपने सभी संक्षिप्त विवरणों को डंप करने के लिए /home/user/mysynonyms.txt
, आप इन 3 पूर्व कमांडों का उपयोग कर सकते हैं:
:let abbrev_list = []
:call substitute(join(readfile($MYVIMRC), "\n"), '\v%(^|\n)\s*i?%(nore)?ab%[brev]\s+%(%(\<expr\>|\<buffer\>)\s+){,2}(\k+)', '\=add(abbrev_list, submatch(1))', 'gn')
:call writefile(abbrev_list, '/home/user/mysynonyms.txt')
EDIT2:
मैं झंडा जोड़ दिया है n
जब substitute()
समारोह क्योंकि आप किसी भी प्रतिस्थापन की जरूरत नहीं है कहा जाता है। इसका एक ही उद्देश्य है कि जब भी कोई सूची मिले उसके अंदर एक संक्षिप्त नाम जोड़ें।
लेकिन क्योंकि आपके पास कई संक्षिप्ताक्षर हैं, यह प्रक्रिया को बेकार रूप से धीमा कर सकता है, मुझे नहीं पता। प्रारंभ में, मैंने इसे नहीं डाला क्योंकि मुझे नहीं पता कि आप किस विम संस्करण का उपयोग कर रहे हैं। यदि आपका संस्करण 7.3.627 से नया है , तो यह ठीक होना चाहिए, अन्यथा आपको n
ध्वज को हटाना होगा ।