2010-06-25 8 views
5

मैंने जादुई विम कमांड को देखा है इससे पहले कि आप अपने .vimrc में किसी विशेष प्रकार की फ़ाइल खोलने के लिए बनाए गए फ़ोल्डरों को जोड़ सकें। मुझे याद है कि ऐसा कोड होने से फ़ाइल को खोलने पर, प्रत्येक रूबी विधि और कक्षा में फ़ोल्डर्स बन जाएंगे। फिर, एक आदेश के साथ, मैं उन सभी विधि folds को तोड़ सकता है। क्या कोई पीएल/एसक्यूएल में इनलाइन विचारों के साथ ऐसा करने के बारे में जानता है? मैं निम्नलिखित एसक्यूएल है कहते हैं:वीम में ऑटो-फोल्ड ओरेकल इनलाइन विचारों का उपयोग करते हुए। Vimrc

SELECT blah, 
     teh_max 
FROM (
     SELECT blah, 
       MAX(bar) AS teh_max 
     FROM (
       SELECT blah, 
        bar 
       FROM foo 
      ) 
     GROUP BY blah 
    ) 
ORDER BY blah 

मैं चाहूँगा जब मैं विम में खोल इतना है कि मैं एक FROM ( लाइन पर जा सकते हैं परतों बनाया जाना, आदेश मोड में zc मारा, और इनलाइन दृश्य पर शुरू किया है उस रेखा को ध्वस्त कर दिया जाएगा। एक आदेश के साथ सभी गुनाओं को भी पतन करना अच्छा होगा।

उत्तर

3

वाक्य रचना के आधार पर तह की स्थापना द्वारा सक्रिय है foldmethodsyntax रहे हैं:

" for all windows 
set foldmethod=syntax 
" for the current window 
setlocal foldmethod=syntax 

तह तो वाक्य रचना परिभाषा है, जो गुना के स्तर वृद्धि करनी चाहिए जो क्षेत्रों के लिए fold तर्क कर किया जाता है के भीतर निर्दिष्ट किया जाना चाहिए । प्रलेखन के शब्दों में:

The "fold" argument makes the fold level increase by one for this item. 
Example: 
    :syn region myFold start="{" end="}" transparent fold 
    :syn sync fromstart 
    :set foldmethod=syntax 
This will make each {} block form one fold. 

तो तुम जो कुछ फ़ाइल प्रकारों के संबंध में वाक्य रचना फ़ाइलों में जाने के लिए, और उचित क्षेत्रों के लिए fold तर्क जोड़ सकते हैं या संभवतः अपने स्वयं के क्षेत्रों में जोड़ने होगा। आपके मामले में, ऐसा लगता है कि यह सी/सी ++ सिंटैक्स के फोल्ड-बाय-ब्रेसेस के समान है, कोष्ठक को छोड़कर।

डिफ़ॉल्ट वाक्यविन्यास फ़ाइलों को आम तौर पर लिनक्स पर /usr/share/vim/vimXX/syntax में रखा जाता है (और अनुमानतः <vim-directory>\vimXX\syntax विंडोज़ पर?) जहां XX अवधि के बिना संस्करण संख्या है (उदा। 72)। /usr/share/vim/vimfiles/syntax या ~/.vim/syntax में फ़ाइलों द्वारा प्रति उपयोगकर्ता द्वारा फ़ाइलों द्वारा सिस्टम-व्यापी ओवरराइड किया जा सकता है।

+0

मैंने फ़ोल्ड जोड़ने की कोशिश की जहां शुरुआत और अंत केवल ब्रांड्स हैं लेकिन यह काम नहीं करता है क्योंकि SQL में इतनी सारी चीज़ें ब्रांड्स का उपयोग करती हैं, उदाहरण के लिए, 'MAX (बार)'। 'प्रारंभ =' को सेट करना ("' या तो काम नहीं किया; यह वहां एक गुना पहचान नहीं पाया। –

0

मैं केवल बहुस्तरीय SQL क्वेरी से बचने के लिए सुझाव दूंगा। आप हमेशा एक दृश्य, एक अस्थायी तालिका बना सकते हैं। मुझे पता है कि टॉम क्यटे के सिद्धांत के साथ विरोधाभास है, लेकिन यह 10 साल पीएल/एसक्यूएल अभ्यास है। जटिल कार्यक्रम को कई सरल भागों में विभाजित करें। सरल प्रश्नों में जटिल एसक्यूएल प्रश्नों को विभाजित करें।

आपके उदाहरण में, क्वेरी को समझना काफी आसान है, तह केवल परेशान होगा।

नेस्टेड पीएल/एसक्यूएल प्रक्रियाओं के विपरीत विपरीत फोल्डिंग काफी उपयोगी काम करता है। Vim.org पर वीआईएम के लिए एक स्क्रिप्ट है।

संबंधित मुद्दे