जहां तक मुझे पता है कि ऐसा करने के लिए कोई सेटिंग या कुछ ऐसा नहीं है। लेकिन सभी खो नहीं है, हम निश्चित रूप से BufWritePre
ऑटोकॉमैंड का उपयोग कर सकते हैं
।
डिस्क पर बफ़र लिखे जाने से पहले इसे निष्पादित किया जाता है। तो अगर हम अभी तक मौजूद नहीं हैं तो हम वहां निर्देशिका बना सकते हैं।
उदाहरण के लिए:
augroup Mkdir
autocmd!
autocmd BufWritePre *
\ if !isdirectory(expand("<afile>:p:h")) |
\ call mkdir(expand("<afile>:p:h"), "p") |
\ endif
augroup END
- हम पहले जाँचते हैं कि क्या निर्देशिका मौजूद है
isdirectory
, अन्यथा mkdir
कोई त्रुटि देता है।
<afile>
उस फ़ाइल को संदर्भित करता है जिसे हम सहेजने की कोशिश कर रहे हैं; :p
पूर्ण पथनाम (सापेक्ष के बजाय) में इसका विस्तार करने के लिए एक संशोधक है, और :h
अंतिम पथ घटक (फ़ाइल) को निकालता है।
mkdir()
यदि आवश्यक हो तो हम फिर फोन करते हैं । सभी माता-पिता निर्देशिका (यानी के मामले में) बनाने के p
लिए हमें ध्वज की आवश्यकता mkdir()
है nonexistent/more_nonexisting/file
।
आप निश्चित रूप mkdir()
से, विम कमांडलाइन से कमांड चला सकते हैं , या इसे कीबाइंड पर बाँध सकते हैं, अर्थात:
nnoremap <Leader>m :call mkdir(expand("%:p:h"), "p")<CR>
यहाँ मैंने %
इसके बजाय प्रयोग किया है <afile>
, क्योंकि यह केवल एक ऑटोकॉमैंड के भीतर से मान्य है ( %
वर्तमान में सक्रिय बफ़र को संदर्भित करता है, जो :wa
उदाहरण के साथ नहीं होगा । <afile>
बफ़र के फ़ाइलनाम को संदर्भित करता है जो ऑटोकैम को चलाता है)।
यदि आप चाहें तो एक निर्देशिका लिखने से पहले आप इसकी पुष्टि भी कर सकते हैं। अधिक विवरण के लिए यह प्रश्न देखें: मैं BufWritePre ऑटोकेमैंड में फ़ाइल लिखने से विम को कैसे रोक सकता हूं?
उपरोक्त स्निपेट पहले लिखने पर निर्देशिका बनाएगा ( :w
)। यदि आप चाहते थे, तो निर्देशिका को तब भी बना सकते हैं जब आप पहली बार इसे खोलते हैं (यानी टाइप करने के बाद vim ...
) BufNewFile
इसके बजाय ऑटोकैम का उपयोग करके BufWritePre
।
इसमें auto_mkdir नाम का एक प्लगइन भी है जो प्रभावी रूप से ऊपर वाला ही है।
इस पृष्ठ पर
थोड़ा विस्तारित स्निपेट है जो आपसे यह भी पूछता है कि क्या आप पहले निर्देशिका बनाना चाहते हैं, जो कुछ उपयोगी हो सकता है। यह लिखने से पहले एन्कोडिंग का फ़ाइल नाम भी परिवर्तित करता है:
call mkdir(iconv(expand("%:p:h"), &encoding, &termencoding), 'p')
मुझे यकीन नहीं है कि यह वास्तव में आवश्यक है, लेकिन यदि आप एन्कोडिंग को बहुत मिलाते हैं और अजीब फ़ाइल नाम प्राप्त करते हैं, तो आप इसे आज़मा सकते हैं।
मैं आसान स्थापना के लिए एक auto_mkdir2.vim
प्लगइन में उपरोक्त सभी डाल दिया ।