विम शब्द के पात्रों के रूप में umlauts नहीं लेता है


9

जब मैं एक जर्मन पाठ लिखता हूं जिसमें abücdउदाहरण के लिए और dwसामने कुछ होता है, तो यह केवल हटा देगा abक्योंकि यह üएक शब्द चरित्र के रूप में व्याख्या नहीं करता है ।

जब मैं reStructuredText संपादित करता हूं, तो मेरे पास है

iskeyword=38,42,43,45,47-58,60-62,64-90,97-122,_

यह बताता है कि umlauts चिह्नित क्यों नहीं हैं, लेकिन मुझे समझ नहीं आता कि यह कहां से आता है। जब मैं सिर्फ gVim ओपन करता हूं तो यह सेट हो जाता है

iskeyword=@,48-57,_,192-255

यह कहां से आ सकता है?


3
set encoding=utf-8अपने में रखो .vimrc
क्यूंग्लम

वह पहले से ही मेरे में है .vim/vimrcऔर :set enc?मुझे देता है utf-8। उसी के साथ fenc। फिर भी यह काम नहीं करता है।
मार्टिन उडिंग

बाद :set iskeyword&है üअभी भी एक शब्द का एक भाग के रूप में मान्यता प्राप्त नहीं?
रुईचिरो

अपने iskeyword ( set iskeyword) के रूप में दिखाएं । यह कुछ इस तरह होना चाहिए "@,48-57,_,128-167,224-235"या "@,48-57,_,192-255"। क्या आप विम या वीआई का उपयोग कर रहे हैं? (Vi में डिफ़ॉल्ट मान "@,48-57,_") ü को नहीं पहचानता है, विम में डिफ़ॉल्ट मान ठीक है)
JJoao

1
मैं gVim का उपयोग करता हूं और करता हूं iskeyword=@,48-57,_,192-255। यह जादुई रूप से अब एक ताजा विम उदाहरण में काम करता है। यह अजीब है, मुझे और ध्यान से देखना होगा।
मार्टिन उडिंग

जवाबों:


5

@में चरित्र iskeywordसभी पात्रों जिसके लिए भी शामिल है isalpha()(सी समारोह) सही है, आधुनिक (पिछले 20 वर्षों में) परिवाद कार्यान्वयन में यह यूनिकोड वर्णों के लिए भी दिखता है।

आपका दूसरा iskeywordउपयोग 97-122(az) और 64-90(AZ) है, जिसमें विभिन्न विकृति विज्ञान (जैसे umlaut / diaeresis / trema) के साथ सभी प्रकार शामिल नहीं हैं।

तो समाधान के साथ 97-122और बदलने 64-90के लिए है @

यह फंकी iskeywordLISP सिंटैक्स फ़ाइल से आता है; rstवाक्य रचना फ़ाइल कोड ब्लॉक पर प्रकाश डाला के लिए अन्य वाक्य रचना फाइलों का एक समूह भी शामिल है।

सौभाग्य से आप g:rst_syntax_code_listचर के साथ किन भाषाओं को शामिल कर सकते हैं । डिफ़ॉल्ट है:

let g:rst_syntax_code_list = ['vim', 'java', 'cpp', 'lisp', 'php', 'python', 'perl']

चूंकि यह संभावना नहीं है कि आपको अपने reStructuredText फ़ाइल में LISP सिंटैक्स हाइलाइटिंग की आवश्यकता है, आप शायद इसे हटा सकते हैं। इसे अपनी vimrc फ़ाइल में कहीं भी जोड़ें, यदि यह परिभाषित है, तो सिंटैक्स फ़ाइल स्वयं को परिभाषित करने के बजाय उस मान का उपयोग करेगी।

मेरी राय में, आप शायद उपयोग करना चाहते हैं:

let g:rst_syntax_code_list = []

क्योंकि कौन जानता है कि फंकी साइड-इफेक्ट्स का अन्य सिंटैक्स फ़ाइलों के कारण क्या होता है ...


शांत, धन्यवाद! यह अब तक उबंटू पर मेरे साथ नहीं हुआ, यह केवल फेडोरा 22 पर हुआ है। संभवतः उनकी सिंटैक्स फाइलें थोड़ी भिन्न हैं। यह अब काम करता है।
मार्टिन उडिंग

@अल्फ़ान्यूमेरिक पात्रों के लिए खड़े होने का संकेत वास्तव में मददगार था।
ज़ेल्फिर कल्टस्टाल

1

यदि कोई उदाहरण मार्केड फ़ाइल के लिए अन्य भाषाओं के व्याकरणों को इनलाइन करता है, तो उन भाषाओं की सेटिंग्स मार्कडाउन सिंटैक्स के लिए सेटिंग्स को ओवरराइड करने लगती हैं। एक जाँच कर सकता है कि क्या यह मामला है:

:verbose set iskeyword?

इसे ठीक करने के लिए, कोई एक ऑटो कमांड को हर बार चलाने के लिए परिभाषित कर सकता है जब एक मार्कडाउन फ़ाइल में प्रवेश करता है (और शायद अन्य भाषाओं में):

autocmd BufEnter,BufNewFile *.md set iskeyword=38,42,43,45,47-58,60-62,_,@

मेरे .vimrcलिए इस मुद्दे को तय करना। मैं उपयोग कर रहा था vim-pandocवाक्य रचना और सहित inlined भाषाओं racket, python, shऔर कुछ। मुझे लगता है कि मार्कडाउन फ़ाइलों को छोड़ने के लिए एक ऑटो कमांड को परिभाषित करना आवश्यक नहीं है, क्योंकि जब आप अन्य भाषाओं की फ़ाइलों को दर्ज करते हैं, तो उनकी वाक्यविन्यास फ़ाइलों को अपने कीवर्ड सेट करना चाहिए, अगर मैं सही ढंग से समझता हूं।

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