तह विफल: विम किसी भी गुना नहीं मिल सकता है


9

मैं कुछ PHP कोड को मोड़ने की कोशिश कर रहा हूं, और मैंने कुछ कोड के कट-डाउन संस्करण को शामिल किया है जिन्हें मैं पोस्ट के अंत में मोड़ने की कोशिश कर रहा हूं।

मैंने निम्नलिखित vim कमांड की कोशिश की है, लेकिन केवल पूर्व कमांड काम के नीचे है। गैर-पूर्व आदेश काम नहीं करते हैं और स्टेटस लाइन में एक सफेद-ऑन-लाल संदेश का उत्पादन करते हैं: मैं कोई सिलवटों को नहीं ढूंढ सकता।

:help folding
:help fold-commands
:help foldmethod

:set foldmethod=syntax

zi - toggle folding

zj - move to top of next fold
zk - move to bottom of previous fold

za - toggle current fold open and closed
zo - open current fold
zc - close current fold

zA - toggle all current folds at the current cursor position
zO - open all current folds at the current cursor position
zC - close all current folds at the current cursor position

मैं सिलवटों को खोजने के लिए वीएम कैसे प्राप्त कर सकता हूं (जैसे मैं कोड को {और के बीच मोड़ना चाहता हूं }, या बीच में (और )

यहाँ कुछ नमूना कोड है (केवल यह दिखाने के लिए कि यह वाक्यविन्यास रूप से सही है और इसलिए vim कमांड को काम करना चाहिए):

function getTree() {

  return array(
    "node1" => array(
      "node11" => array(
        "node111" => "leaf111",
        "node112" => "leaf112",
        "node113" => "leaf113",
      ),
          "node12" => array(
        "node121" => "leaf121",
        "node122" => "leaf122",
        "node123" => "leaf123",
      ),
      "node13" => array(
        "node131" => "leaf131",
        "node132" => "leaf132",
        "node133" => "leaf133",
      ),
    ),
    "node2" => array(
      "node21" => array(
        "node211" => "leaf211",
        "node212" => "leaf212",
        "node213" => "leaf213",
      ),
          "node22" => array(
        "node221" => "leaf221",
        "node222" => "leaf222",
        "node223" => "leaf223",
      ),
      "node23" => array(
        "node231" => "leaf231",
        "node232" => "leaf232",
        "node233" => "leaf233",
      ),
    ),
    "node3" => array(
      "node31" => array(
        "node311" => "leaf311",
        "node312" => "leaf312",
        "node313" => "leaf313",
      ),
          "node32" => array(
        "node321" => "leaf321",
        "node322" => "leaf322",
        "node323" => "leaf323",
      ),
      "node33" => array(
        "node331" => "leaf331",
        "node332" => "leaf332",
        "node333" => "leaf333",
      ),
    ),
  );

}

जवाबों:


9

विम PHP सिंटैक्स फोल्डिंग बिल्ट-इन के साथ नहीं आता है। हालाँकि, यदि आपके सभी कोड ठीक से इंडेंट हैं (जैसा कि आपका उदाहरण है), आप एक अलग फोल्ड विधि का उपयोग कर सकते हैं:

:set foldmethod=indent

5

phpfolding.vim यह प्रदान करता है। इस ओवर :set foldmethod=indentका लाभ यह है कि यह "चालाक" है क्योंकि यह वास्तविक PHP सिंटैक्स को देखता है, न कि केवल इंडेंटेशन को। README से:

  • यह तह सेटिंग्स को याद करता है। यदि आप फ़ंक्शन जोड़ते हैं और स्क्रिप्ट को फिर से निष्पादित करते हैं, तो आपके खोले गए तह बंद नहीं होंगे।
  • यह टिप्पणी ब्लॉक या स्ट्रिंग शाब्दिक में कोष्ठक द्वारा भ्रमित नहीं होगा।
  • उनके PhpDoc टिप्पणियों के साथ वर्ग गुणों की तह।
  • सभी श्रेणी के गुणों को एक तह में मोड़ना।
  • मूल मार्कर शैली तह भी तह।
  • एक "**" गुना को इंगित करता है PhpDoc अंदर है (कॉन्फ़िगर करने योग्य)।
  • गुना को पोस्टफ़िक्स करना "** # @ +" इंगित करता है कि PhpDocBlock अंदर (कॉन्फ़िगर करने योग्य) है।
  • सिलवटों को मोड़ने वाली खाली लाइनों को गुना में शामिल करने के लिए कॉन्फ़िगर किया जा सकता है।
  • नेस्टेड सिलवटों का समर्थन किया जाता है (कार्यों के अंदर कार्य, आदि)
  • तह निजी, सार्वजनिक, संरक्षित वर्ग चर + बहु-पंक्ति परम।
  • फ़्लॉडिंग क्लास अब डिफ़ॉल्ट रूप से अक्षम एक विकल्प है।

.vimस्क्रिप्ट डाउनलोड करके इसे स्थापित करें , और इसे ~/.vim/ftplugin/php/(या यदि आप एक का उपयोग करते हैं, तो अपने प्लगइन प्रबंधक का उपयोग करें)। यह स्वचालित रूप से मोड़ देगा, जिसे आप अक्षम कर सकते हैं let g:DisableAutoPHPFolding = 1


मैं इस प्लगइन की कोशिश करेंगे। मुझे यकीन है कि अतिरिक्त सुविधाएँ प्रदान करना उपयोगी होगा क्योंकि कभी-कभी कोड लिखते समय वाक्यविन्यास त्रुटियां होती हैं। धन्यवाद।
जॉन सोंडरसन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.