Неможливо скласти: vim не може знайти жодної складки


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, щоб знайти складки (наприклад, я хочу скласти код між {і }, або між (і ).

Ось приклад коду (просто щоб показати, що він синтаксично правильний і, отже, команди 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, а не лише на відступ. З ПРОЧИТАННЯ:

  • Він запам'ятовує налаштування складок. Якщо ви додасте функції та виконаєте сценарій ще раз, розкриті складки не закриються.
  • Це не заплутається дужками в блоках коментарів або рядкових літералах.
  • Складання властивостей класу з їх коментарями PhpDoc.
  • Складання всіх властивостей класу в одну складку.
  • Складення оригінального стилю маркера теж.
  • Постфіксація складки "**" вказує, що PhpDoc знаходиться всередині (налаштовується).
  • Постфіксація складки "** # @ +" вказує, що PhpDocBlock знаходиться всередині (налаштовується).
  • Порожні рядки, що постфіксують складки, можна налаштувати так, щоб вони були включені в складку.
  • Вкладені складки підтримуються (функції всередині функцій тощо)
  • Складання приватних, відкритих, захищених змінних класів + багаторядковий парам.
  • Згортання класу тепер параметр вимкнено за замовчуванням.

Встановіть його, завантаживши .vimскрипт і вставте його ~/.vim/ftplugin/php/(або скористайтеся своїм менеджером плагінів, якщо він використовується). Вона згорнеться автоматично, яку ви можете відключити let g:DisableAutoPHPFolding = 1.


Я спробую цей плагін. Я впевнений, що додаткові функції, які вона надає, будуть корисні, оскільки іноді при написанні коду виникають синтаксичні помилки. Дякую.
Джон Сондерсон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.