आंतरिक विम शब्दसूची में फ़ाइल के लिए विशिष्ट अच्छे शब्द जोड़ें (मॉडल के माध्यम से)


9

क्या मॉडलाइन के माध्यम से आंतरिक शब्दसूची को सही ढंग से वर्तनी शब्दों को जोड़ना संभव है? या एक और फ़ाइल विशिष्ट विधि?

विम प्रमुख कमांड के माध्यम से अस्थायी आंतरिक-वर्डलिस्ट में शब्दों को जोड़ सकते हैं zGया :spellgood! {word}। क्या मॉडलाइन पर भी ऐसा ही किया जा सकता है?

एक उदाहरण पाठ का अनुसरण करना होगा जहां मैं चाहता हूं कि विम्स की वर्तनी जाँच का उपयोग करते समय "RAS" और "RAP" शब्दों को अच्छे शब्दों में माना जाए।

आरएएस सिंड्रोम ("अतिरेक संक्षिप्त सिंड्रोम सिंड्रोम" के लिए छोटा), जिसे पीएनएस सिंड्रोम ("पिन नंबर सिंड्रोम सिंड्रोम" के रूप में भी जाना जाता है, जो "व्यक्तिगत पहचान संख्या सिंड्रोम सिंड्रोम") या आरएपी वाक्यांशों ("अतिरेक संक्षिप्त वाक्यांश वाक्यांश") का विस्तार करता है। एक या अधिक शब्दों के उपयोग को संदर्भित करता है जो संक्षिप्त रूप के साथ एक संक्षिप्त या प्रारंभिकवाद बनाते हैं, इस प्रकार एक या अधिक शब्दों को दोहराते हैं।

टेक्स्ट को http://en.wikipedia.org/wiki/RAS_syndrome से कॉपी किया गया था

जवाबों:


6

वर्तमान में विम ऐसा करने के लिए कोई "मूल" तंत्र प्रदान नहीं करता है, हालांकि मुझे लगता है कि यह एक अच्छा विचार है। केवल एक चीज जिसके बारे में मैं सोच सकता हूं वह यह है :autocmdकि एक फ़ंक्शन को कॉल करता है जो फ़ाइल में एक विशेष अनुभाग की खोज करता है और फिर उस अनुभाग में शब्दों पर कर्सर ले जाता है और कमांड के zGसाथ ट्रिगर होता है :normal। यह गड़बड़ होगा और मैं इससे परेशान होने के लिए अनिच्छुक रहूंगा।

संपादित करें: बेशक, किसी तरह मैं के अस्तित्व को नजरअंदाज कर दिया:spellgood!, भले ही यह आपके प्रश्न में हो। यह काम को और अधिक संभव बनाता है। मैं एक बुनियादी कार्यान्वयन के साथ आया था, जिसे आप अपनी आवश्यकताओं के अनुरूप बना सकते हैं:

function! AutoSpellGoodWords()
    let l:goodwords_start = search('\C-\*-SpellGoodWordsStart-\*-', 'wcn')
    let l:goodwords_end = search('\C-\*-SpellGoodWordsEnd-\*-', 'wcn')
    if l:goodwords_start == 0 || l:goodwords_end == 0
        return
    endif
    let l:lines = getline(l:goodwords_start + 1, l:goodwords_end - 1)
    let l:words = []
    call map(l:lines, "extend(l:words, split(v:val, '\\W\\+'))")
    for l:word in l:words
        silent execute ':spellgood! ' . l:word
    endfor
endfunction

autocmd BufReadPost * call AutoSpellGoodWords()

यह एक ब्लॉक की खोज करेगा जो कुछ इस तरह दिखता है:

-*-SpellGoodWordsStart-*-
word1 word2 word3
word4 word5 ...
-*-SpellGoodWordsEnd-*-

और प्रत्येक शब्द यह पाता है - इस मामले में, word1, word2, word3, word4, और word5ब्लॉक --within यह अस्थायी अच्छे शब्द सूची में जोड़ देगा।

बस इस बात का ध्यान रखें कि मैंने इस पर जोर नहीं दिया है।


यह मेरी अपेक्षा से कहीं अधिक गहराई में है, और यह एक बहुत उपयोगी विम स्क्रिप्ट बना देगा। मैंने vim.org की जाँच की, लेकिन उसमें कोई समान मैच नहीं थे। धन्यवाद!
चार्ल्स मारेश
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.