विम में एडिटिंग करते समय गलत इंडेंटेशन


90

विम को इसलिए सही नहीं लगता है कि यम एलएलएल फाइलों में डैश प्रतीक पर प्रारूप को तोड़ता है।

उदाहरण के लिए मेरे पास एक ब्लॉक है जो इस तरह दिखना चाहिए:

  handlers:
        - name: restart exim4
          service: name=exim4 state=restarted

जब मैंने टाइपिंग पूरी कर ली restart exim4और service:विम अंतिम serviceपंक्ति को टाइप करता है :

  handlers:
        - name: restart exim4
        service: name=exim4 state=restarted

तो स्पष्ट रूप से विम वाक-काल कॉलम को संरेखित करने की कोशिश करता है, लेकिन ऐसा नहीं है कि YAML में इसकी आवश्यकता है। मैं दो मानों के साथ एक सरणी बनाना चाहता हूं।

उसे कैसे ठीक करें?

जवाबों:


25

इस प्लगइन को स्थापित करें:

https://github.com/chase/vim-ansible-yaml

यह Ansible को ध्यान में रखकर बनाया गया है, लेकिन सिद्धांत रूप में यह सभी प्रकार की YAML फाइलों के साथ काम करेगा। यदि आपको ansible संबंधित फाइलों के साथ काम नहीं कर रहा है, तो आपको: filetype = ansible को दुर्भाग्य से सेट करना होगा।


मैंने इस प्लगइन को देखा - यह एक निश्चित नाम और / या एक विशिष्ट फ़ोल्डर में होने के लिए फ़ाइल नाम की अपेक्षा करता है। Ansible playbooks मैं संपादित करने वाली केवल फाइलें नहीं हैं। इसलिए मैंने इसे स्थापित करने का प्रयास भी नहीं किया। धन्यवाद, मैं 'ansible' टाइप करने के लिए yml सेट करूँगा।
Glueon

1
वाह, एक बड़ा फर्क पड़ता है, मुझे लगता है कि हालांकि नियमित yamlवाक्यविन्यास के रूप में अच्छी तरह से फिक्सिंग
akostadinov

सच, यदि आप इस मार्ग पर जाते हैं तो आपको # vim:ft=ansible:अपनी सभी गैर-अखाद्य फाइलों में डाल देना होगा ।
एलियाह लिन

158

अच्छा 2-स्पेस YAML को डिफ़ॉल्ट के रूप में प्राप्त करने के लिए जब मैंने कोलन के बाद गाड़ी वापसी को मारा, तो मैंने इसे अपने साथ जोड़ा .vimrc:

autocmd FileType yaml setlocal ts=2 sts=2 sw=2 expandtab

यह भी ओपी के अपेक्षित परिणाम के लिए डैश के साथ अच्छा खेलता है।


2
धन्यवाद, यह काम करता है।
गायन वीरकुट्टी

अच्छा और सरल। /etc/vim/vimrc(वैश्विक विन्यास के लिए) के साथ काम करता है, जबकि मुझे vim-ansible-yamlविश्व स्तर पर काम करने के लिए प्लगइन नहीं मिल सका ।
सर्वर फॉल्ट

4
इसे ~ / vim / ftplugin / yaml.vim में डालने पर विचार करें और भविष्य में पठनीयता के लिए लंबे नामों के साथ छोटे नामों को प्रतिस्थापित करें।
निर्गमन

3
@LeviNoecker हां सिर्फ कॉमा उन्हें इस तरह से अलग करती हैautocmd FileType yaml,yml setlocal ...
ट्रे स्टाउट

2
यह ऊपर मेरी टिप्पणियों का योग है -> gist.github.com/dragonken/c29123e597c6fdf022284cf36d245b64
Elijah Lynn

18

जब आप :कुंजी टाइप करते हैं तो आप रीइंडेंट को अक्षम कर सकते हैं :

:set indentkeys-=<:>

कृपया ~/.vimrcफ़ाइल संपादित करें , और इन पंक्तियों को जोड़ें:

filetype plugin indent on
autocmd FileType yaml setl indentkeys-=<:>

नोट: autocmd के बाद आता है filetype


आप उदाहरण के लिए, INSERT मोड CTRL-Fमें टाइप करके बारहसिंगे को ट्रिगर कर सकते हैं :

hello: world
    foo: bar<C-F>

9

आप इस ऑटोकॉमंड का उपयोग विम को ठीक से इंडेंट करने के लिए YAML फाइलें बनाने के लिए कर सकते हैं (इसे अपने पास रखें .vimrc):

" Fix auto-indentation for YAML files
augroup yaml_fix
    autocmd!
    autocmd FileType yaml setlocal ts=2 sts=2 sw=2 expandtab indentkeys-=0# indentkeys-=<:>
augroup END

मूल रूप से, YAML फ़ाइल के लिए यह विम को निर्देश देता है:

  • इंडेंटेशन के लिए 2 रिक्त स्थान का उपयोग करें।
  • टैब के बजाय रिक्त स्थान का उपयोग करें।
  • #एक पंक्ति, या एक बृहदान्त्र की शुरुआत में एक टिप्पणी चरित्र ( ) डालने के बाद फिर से इंडेंटिंग लाइनों को छोड़ दें ।

.Yml जोड़ने से भी मदद मिलती है
Gert van den Berg

किसका? कहाँ पे?
mr.zog

3

आप इस फ़ाइल के लिए विम विशेष विन्यास बताने के लिए अपने YAML में एक टिप्पणी जोड़ सकते हैं। उदाहरण के लिए:

# vim: set shiftwidth=2 tabstop=2 softtabstop=-1 expandtab:
foo:
  bar:
  - a
  - b

फिर हर कोई, जो इस फ़ाइल को डिफ़ॉल्ट विम के साथ उपयोग करता है, फ़ाइल निर्माता के कॉन्फ़िगरेशन को साझा कर सकता है। यह सहयोग करते समय विशेष रूप से अच्छी तरह से काम करता है।


1

यहाँ augroupमैं yaml के लिए है:

augroup filetype_yaml
    autocmd!
    autocmd BufNewFile,BufReadPost *.{yaml,yml} set filetype=yaml foldmethod=indent
    autocmd FileType yaml |
        setlocal shiftwidth=2 |
        setlocal softtabstop=2 |
        setlocal tabstop=2
augroup END

0

मुझे बढ़िया काम करने के लिए https://github.com/stephpy/vim-yaml मिला है । यह एक विम प्लगइन है जो यमल फ़ाइलों का इंडेंटेशन (और सिंटैक्स हाइलाइटिंग) करता है। इसे स्थापित करने से उस विशिष्ट समस्या का समाधान होता है, जिसके बारे में आपने पूछा है।

आपको प्लगइन स्थापित करने की आवश्यकता है (GitHub repo में डोको देखें) और जब तक आपका filetype=yamlयह आपके इंडेंटिंग को सही करेगा। यह आप दोनों की मदद करेंगे

  1. जैसा कि आप प्रदान की गई स्निपेट टाइप कर रहे हैं, या
  2. यदि आपके पास पहले से कुछ याम्ल लिखा है, तो आप इसे चुन सकते हैं ( Vलाइन-वार चयन के लिए तो उपयोग करें jया kअधिक लाइनों का चयन करने के लिए) फिर vim स्वरूपण को ट्रिगर करें=
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.