Katlanma başarısız: vim herhangi bir kat bulamıyor


9

Ben bazı PHP kodu katlamaya çalışıyorum ve ben yazının sonunda katlamak çalışıyorum kodun bir cut-down versiyonu dahil ettik.

Aşağıdaki vim komutlarını denedim, ancak sadece aşağıdaki ex komutları çalışır. Ex olmayan komutlar çalışmaz ve durum satırında kırmızı-beyaz bir mesaj üretir: Hiçbir kıvrım bulamıyorum.

: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

Nasıl mesela ben (kıvrımları bulmak için vim almak arasındaki kod katlamak istiyor olabilir {ve }ya aralarında (ve ).

İşte bazı örnek kod (sadece sözdizimsel olarak doğru olduğunu ve vim komutlarının çalışması gerektiğini göstermek için):

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",
      ),
    ),
  );

}

Yanıtlar:


9

Vim yerleşik PHP sözdizimi katlama ile gelmiyor. Ancak, tüm kodlarınız düzgün bir şekilde girintiliyse (örneğin olduğu gibi), farklı bir katlama yöntemi kullanabilirsiniz:

:set foldmethod=indent

5

phpfolding.vim bunu sağlar. Bunun avantajı :set foldmethod=indent"daha akıllı" olması, çünkü sadece PHP'nin sözdizimine değil gerçek PHP sözdizimine bakar. README'den:

  • Katlama ayarlarını hatırlar. İşlevler ekler ve komut dosyasını tekrar çalıştırırsanız, açık katlamalarınız kapatılmaz.
  • Yorum bloklarındaki veya dizgi değişmezlerindeki parantezlerle karıştırılmayacaktır.
  • Sınıf özelliklerinin PhpDoc yorumlarıyla katlanması.
  • Tüm sınıf özelliklerinin bir kat halinde katlanması.
  • Orijinal işaretleyici stilini katlamak da katlanır.
  • Katlamayı sabitleyen bir "**", PhpDoc'un içinde olduğunu (yapılandırılabilir) belirtir.
  • Katlamayı sabitleyen bir "** # @ +", PhpDocBlock'un içinde (yapılandırılabilir) olduğunu gösterir.
  • Kıvrımları düzelttikten sonra oluşan boş satırlar, katlamaya dahil edilecek şekilde yapılandırılabilir.
  • İç içe kıvrımlar desteklenir (işlevler içindeki işlevler, vb.)
  • Katlanan özel, genel, korumalı sınıf değişkenleri + çok satırlı param.
  • Sınıfı kaydırmak artık varsayılan olarak devre dışı bırakılmış bir seçenektir.

.vimKomut dosyasını indirip yerleştirerek yükleyin ~/.vim/ftplugin/php/(veya kullanıyorsanız eklenti yöneticinizi kullanın). Devre dışı bırakabileceğiniz otomatik olarak katlanır let g:DisableAutoPHPFolding = 1.


Bu eklentiyi deneyeceğim. Eminim sağladığı ekstra özellikler yararlı olacaktır çünkü bazen kod yazarken sözdizimi hataları vardır. Teşekkürler.
John Sonderson
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.