2014-04-28 5 views
19

में क्षेत्र की जांच करें मैं अपने .tex फ़ाइलों को लिखने के लिए विम का उपयोग करता हूं, लेकिन मुझे विम में वर्तनी परीक्षक के साथ समस्या हो रही है। कभी-कभी यह शब्दों की जांच नहीं करता है, और मुझे लगता है कि यह निम्नलिखित कारणों से हो सकता है।विम वर्तनी जांच हमेशा .tex फ़ाइल में काम नहीं कर रही है। विम

चूंकि विम स्पष्ट रूप से .tex दस्तावेज़ में सभी शब्दों की जांच नहीं करना चाहता है, उदाहरण के लिए, प्रस्तावना नहीं, यह केवल कुछ क्षेत्रों (वाक्यविन्यास अर्थ में) में वर्तनी की जांच करता है। जैसा कि मैंने here से एकत्र किया है, इनमें से एक क्षेत्र texSectionZone है। ये क्षेत्र काफी बड़े हो सकते हैं, वास्तव में अक्सर एक खंड होता है, इसलिए विम को यह महसूस करने में परेशानी हो रही है कि यह वास्तव में texSectionZone क्षेत्र (या अन्य में) में है, और इसलिए वर्तनी की जांच नहीं करता है। ऐसा तब हो सकता है जब मैं दस्तावेज़ में कोई खोज करता हूं, या किसी भी प्रकार की कूद जो एकाधिक लाइनों (या बल्कि पृष्ठों) को छोड़ देता है।

तरीका है कि मैंने निष्कर्ष निकाला इस कारण हो सकता है निम्नलिखित है: मुझे पता है कि आदेश

:echo synIDattr(synID(line("."),col("."),1),"name") 

प्रिंट क्षेत्र के नाम/क्षेत्रों में हो (मैं इसे here पाया जाता है), इसलिए जब वर्तनी परीक्षक काम नहीं किया मैंने कोशिश की, और उसने मुझे बताया कि यह किसी भी क्षेत्र में नहीं था। जिन स्थानों पर यह काम करता था, मैं ऐसे क्षेत्र में था जहां इसे वर्तनी की जांच करनी चाहिए।

अभी तक मेरा एकमात्र समाधान उस बिंदु के ऊपर निकटतम अनुभाग ढूंढना है जिसे मैं स्पेलर को जांचना चाहता हूं, और उसके बाद कर्सर को मैन्युअल रूप से दिए गए बिंदु पर ले जाएं।

आदर्श रूप से मुझे यह समाधान बहुत पसंद आएगा जो यह सुनिश्चित करता है कि ऐसा नहीं होता है, लेकिन मैं कर्सर को बहुत आगे ले जाने के बिना मैन्युअल रूप से vim 'update' बनाने के लिए एक रास्ता तय करता हूं । बाद के मामले में मैं एक समाधान के बारे में सोच रहा हूं जिसे शॉर्टकट में बनाया जा सकता है।

पीएस मुझे संदेह था कि सवाल क्या कहना है। यदि आप एक शीर्षक के साथ आते हैं जो समस्या को बेहतर तरीके से समझाता है, तो इसे बदलने के लिए स्वतंत्र हो गया।

उत्तर

17

syntax/tex.vim पहले से ही विस्तृत विस्तृत सिंक पैटर्न का उपयोग यह सुनिश्चित करने के लिए करता है कि वाक्यविन्यास हाइलाइटिंग सटीक है, लेकिन लंबे और जटिल दस्तावेज़ों के लिए, यह अभी भी असफल हो सकता है।

बेस्ट आप कर सकते हैं

syn sync maxlines=200 
syn sync minlines=50 

के दोनों मूल्यों को बढ़ाने के लिए कोशिश कर रहा है (उदाहरण के लिए 2000 और 500 के लिए)। डिफ़ॉल्ट को ओवरराइड करने के लिए इसे ~/.vim/after/syntax/tex.vim में रखें।

syntax sync fromstart 

सर्वोत्तम परिणाम दे सकता है, लेकिन बहुत धीमा हो सकता है। आपको :help :syn-sync पर सिंटैक्स सिंक्रनाइज़ेशन का विवरण मिलेगा।

+0

यह वही था जो मैं ढूंढ रहा था। मैंने 'सिंक-सिंक' में पढ़ने की कोशिश की, लेकिन मुझे यह स्वीकार करना होगा कि मैं वास्तव में समझ नहीं पा रहा हूं कि चीजें कैसे काम करती हैं। विम सिंटैक्स को कैसे अपडेट करता है? इस बारे में कहीं पसंद है। शायद यह भ्रमित है। मैं जो पूछ रहा हूं वह शायद है: यदि मैं 'सिंटैक्स सिंक सेस्टार्ट' चलाता हूं तो क्या यह दस्तावेज़ _once_ की शुरुआत से वाक्यविन्यास को अद्यतन करता है, या यह विम को बताता है कि इसे हमेशा शुरुआत से सिंटैक्स सिंक्रनाइज़ करना चाहिए? – Kristian

+0

उत्तरार्द्ध एक; अगर यह विम को बहुत धीमा नहीं करता है, तो इसके साथ चिपके रहें! –

+0

ठीक है। नेट पर अधिकांश जगहें, जहां लोग इसका सुझाव देते हैं, वे इसे ध्वनि बनाते हैं क्योंकि यह केवल एक बार होता है। यदि मैं 'syn: सिंक सिंक maxlines = 200' और' सिंक सिंक minlines = 50' चलाता हूं, तो क्या मैं इसे वापस सामान्य (डिफ़ॉल्ट के रूप में) सेट करता हूं? – Kristian

16

वर्तनी जांच नहीं की जाती है जहां कोई वाक्यविन्यास समूह परिभाषित नहीं किया जाता है (या vim द्वारा पाया जाता है)। मुझे अपरिभाषित समूह के लिए वर्तनी जांच को सक्षम करने में भी उपयोगी लगता है (विम के वाक्यविन्यास दस्तावेज में 'toplevel' देखें)।

ऐसा करने के लिए, आदेश लिखें:

वाक्य रचना फ़ाइल में वर्तनी उच्चस्तरीय

: ~/.vim/के बाद/वाक्य रचना/tex.vim

अगर यह होता है फ़ाइल बनाने मौजूद नहीं।

यह मेरे लिए चाल है।

+0

कमांड 'वाक्यविन्यास वर्तनी toplevel' मेरे लिए चाल है –