การพับล้มเหลว: เป็นกลุ่มไม่พบการพับใด ๆ


9

ฉันกำลังพยายามพับโค้ด PHP บางส่วนและฉันได้รวมโค้ดบางเวอร์ชันที่ตัดทอนลงฉันพยายามพับครึ่งท้ายโพสต์

ฉันได้ลองใช้คำสั่ง vim ต่อไปนี้ แต่เพียงคำสั่ง ex ด้านล่างใช้งานได้ คำสั่งที่ไม่ใช่ ex ไม่ทำงานและสร้างข้อความ white-on-red ในบรรทัดสถานะว่า: ฉันไม่พบรอยพับ

: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

Vim ไม่ได้มาพร้อมกับการสร้างไวยากรณ์ PHP ในตัว อย่างไรก็ตามหากรหัสทั้งหมดของคุณถูกเยื้องอย่างถูกต้อง (ตามตัวอย่างของคุณ) คุณสามารถใช้วิธีการพับที่แตกต่างกัน:

:set foldmethod=indent

5

phpfolding.vimให้สิ่งนี้ ข้อดีของการทำแบบนี้:set foldmethod=indentคือมัน "ฉลาดกว่า" เพราะมันดูไวยากรณ์ PHP จริงไม่ใช่แค่การเยื้อง จาก README:

  • มันจำการตั้งค่าพับ หากคุณเพิ่มฟังก์ชั่นและรันสคริปต์อีกครั้งโฟลด์ที่คุณเปิดจะไม่ถูกปิด
  • มันจะไม่สับสนโดยวงเล็บในบล็อกความคิดเห็นหรือตัวอักษรสตริง
  • การพับคุณสมบัติคลาสด้วยความคิดเห็น PhpDoc
  • การพับของคุณสมบัติคลาสทั้งหมดเป็นหนึ่งเท่า
  • การพับรูปแบบเครื่องหมายเดิมจะเป็นการพับเช่นกัน
  • "**" postfixing fold หมายถึง PhpDoc อยู่ภายใน (กำหนดค่าได้)
  • "** # @ +" postfixing พับหมายถึง PhpDocBlock อยู่ภายใน (กำหนดค่าได้)
  • บรรทัดว่างการแก้ไขการพับที่สามารถกำหนดให้รวมอยู่ในการพับ
  • รองรับการพับแบบซ้อน (ฟังก์ชั่นภายในฟังก์ชั่น ฯลฯ )
  • พับส่วนบุคคลพับลิกคลาสตัวแปรที่ป้องกัน + พารามิเตอร์หลายบรรทัด
  • การยกระดับคลาสให้เป็นตัวเลือกถูกปิดใช้งานโดยค่าเริ่มต้น

ติดตั้งโดยการดาวน์โหลด.vimสคริปต์และวางไว้ใน~/.vim/ftplugin/php/(หรือใช้โปรแกรมจัดการปลั๊กอินของคุณหากคุณใช้) let g:DisableAutoPHPFolding = 1มันจะพับอัตโนมัติซึ่งคุณสามารถปิดการใช้งานด้วย


ฉันจะลองปลั๊กอินนี้ ฉันแน่ใจว่าคุณสมบัติพิเศษที่มีให้จะมีประโยชน์เนื่องจากบางครั้งเมื่อเขียนรหัสมีข้อผิดพลาดทางไวยากรณ์ ขอบคุณ
John Sonderson
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.