मैं 'स्मार्ट कोट्स' के साथ विम के वर्तनी जांच का उपयोग कैसे कर सकता हूं


11

"सामान्य" सीधे उद्धरण हैं:
''

और आपके पास "स्मार्ट कोट्स":
'' '' है

विम का स्पेकचेक "स्ट्रेट" उद्धरणों के साथ काम करता है, लेकिन परी वाले उद्धरण नहीं, इसलिए इसे "गलत" माना जाता है:
यह ... मोंटी पायथन का

हालांकि यह नहीं है।

स्क्रीनशॉट, यदि आपका फ़ॉन्ट अंतर नहीं दिखाता है:

यहाँ छवि विवरण दर्ज करें

मैं यह कैसे तय करुं? मैं इसे दोनों वेरिएंट (यह और यह) के लिए काम करना पसंद करूंगा।

जवाबों:


7
$ grep "'" /usr/share/dict/words | wc -l
26226
$ grep -i python /usr/share/dict/words
Python
Python's
python
python's
pythons

समस्या यह है कि एपोस्ट्रोफ के साथ ये सभी शब्द वास्तव में आपकी डिक्शनरी फ़ाइल में हैं। इसलिए यदि आप अपने vim वर्तनी शब्दकोश को संशोधित करने के साथ ठीक हैं, तो ऐसा करें:

$ grep "'" /usr/share/dict/words | sed "s/'/’/g" >> ~/.vim/spell/en.utf-8.add

यह करेगा

  • grepअपने सिस्टम शब्दकोश के सभी शब्दों को खोजने के लिए जिसमें एक एपॉस्ट्रॉफ़ ( ') है;
  • sedसीधे उद्धरण को स्मार्ट उद्धरण में बदलने के लिए (यह s/'/’/g, जहां पहला उद्धरण सीधा है और दूसरा स्मार्ट है); तथा
  • इसे अपनी भाषा के शब्दकोश में जोड़ें (जो भी आपकी भाषा है उसे बदलें)।

आपको इसे एक .splफ़ाइल में पुनः स्थापित करने की आवश्यकता होगी , जिसे आप विम से कर सकते हैं:

:mkspell! ~/.vim/spell/en.utf-8.add

यदि आप वास्तविक वर्तनी फ़ाइलों का उपयोग करना चाहते हैं जो विम एक प्रारंभिक स्थान (आपके सिस्टम शब्दकोश के बजाय) के रूप में उपयोग करता है, तो आप :spelldumpकमांड का उपयोग कर सकते हैं । आउटपुट में वर्तमान के लिए Vim उपयोग करने वाले सभी शब्द शामिल होंगे spelllang, जिसमें.add फ़ाइल से पहले से ही शामिल हैं । :spelldumpकिसी फ़ाइल के परिणाम को सहेजें और पहले दो पंक्तियों (हेडर जानकारी) को हटा दें, फिर ऊपर के समान कमांड का उपयोग करें। आप uniqडुप्लिकेट प्रविष्टियों को हटाने के लिए, साथ ही इसके माध्यम से पाइप करना चाहते हैं। (करने की आवश्यकता नहीं है sort; का उत्पादन :spelldumpपहले से ही हल है।)


आप 'sपैटर्न के रूप में क्यों उपयोग करते हैं ? सिर्फ 'सही के लिए खोज नहीं है, अच्छी तरह से? यह शब्द एक है कि याद करेंगे ' (जैसे एक अलग स्थान में you'd, you'veआदि)
मार्टिन Tournoij

हाँ, तुम सही हो। मैंने अपना उत्तर संपादित कर दिया है।
19

धन्यवाद :-) मुझे यकीन नहीं था कि अगर आपने ऐसा किया है, तो इसे स्वयं संपादित करने में संकोच हो रहा है ...
मार्टिन टूरनोइज

यदि आप :mkspell!मार्ग पर जाना चुनते हैं , तो आप अप्रासंगिक क्षेत्रों के लिए अभिप्रेत शब्दों को फ़िल्टर करना चाहते हैं।
आरोन मैसी

1

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

इस लेख के आधार पर कदम :

  1. निर्देशिका बनाएं ~/.vim/spellऔर इसे बदलें। (रास्ता वीआईएम का हिस्सा है runtimepath।)

  2. अंग्रेजी भाषा के लिए, शब्दकोश यहां डाउनलोड किया जा सकता है । (वैकल्पिक रूप से: लिब्रे ऑफिस रेपो से - आपको दोनों .dicऔर .affफ़ाइलों की आवश्यकता है ।)

    NB बेहतर परिणामों के लिए, मैं en_US और en_GB दोनों प्राप्त करने की सलाह दूंगा। en_GB शब्दकोश LibreOffice रेपो में पाया जा सकता है।

  3. फ़ाइल खोलना:

    unzip -x hunspell-en_US-2017.01.22.zip
    

    संग्रह में कम से कम ये फ़ाइलें होनी चाहिए: en_US.affऔर en_US.dic

  4. VIM प्रारंभ करें ( ~/.vim/spellनिर्देशिका में) और VIM कमांड निष्पादित करें::mkspell! en en_US

    या अगर आपने भी en_GB फाइलें डाउनलोड की हैं: :mkspell! en en_US en_GB

  5. VIM से बाहर निकलें, और वर्तमान निर्देशिका में फ़ाइलों की जाँच करें। फ़ाइल en.utf-8.splबनाई जानी चाहिए ।

  6. किया हुआ!

अब, जब आप वीआईएम शुरू करते हैं और अंग्रेजी भाषा के लिए वर्तनी-जांच को सक्रिय करते हैं, तो उसे पहले ताज़ा बनाई गई .splफ़ाइल को चुनना चाहिए ~/.vim/spellजिसमें पहले से ही यूनिकोड उद्धरणों का समर्थन है। कम से कम यह कि यह मेरे लिए कैसे काम करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.