La piegatura non riesce: vim non riesce a trovare alcuna piega


9

Sto cercando di piegare un po 'di codice PHP e ho incluso una versione ridotta di un po' del codice che sto cercando di piegare alla fine del post.

Ho provato i seguenti comandi vim, ma funzionano solo i comandi ex di seguito. I comandi non-ex non funzionano e producono un messaggio bianco su rosso nella riga di stato che dice: Non riesco a trovare alcuna piega.

: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

Come posso ottenere VIM per trovare le pieghe (ad esempio, voglio piegare il codice tra {e }, o tra (e ).

Ecco un po 'di codice di esempio (solo per dimostrare che è sintatticamente corretto e quindi i comandi vim dovrebbero funzionare):

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

}

Risposte:


9

Vim non include la sintassi PHP pieghevole integrata. Tuttavia, se tutto il codice è rientrato correttamente (come nell'esempio), è possibile utilizzare un metodo di piega diverso:

:set foldmethod=indent

5

phpfolding.vim fornisce questo. Il vantaggio di questo :set foldmethod=indentè che è "più intelligente" perché esamina la sintassi attuale di PHP e non solo il rientro. Dal README:

  • Ricorda le impostazioni di piega. Se aggiungi funzioni ed esegui di nuovo lo script, le tue pieghe aperte non verranno chiuse.
  • Non verrà confuso tra parentesi nei blocchi di commenti o nei letterali di stringa.
  • La piegatura delle proprietà della classe con i loro commenti PhpDoc.
  • La piegatura di tutte le proprietà di classe in una piega.
  • Piegare anche le pieghe dello stile dell'indicatore originale.
  • Un "**" postfisso la piega indica che PhpDoc è all'interno (configurabile).
  • Un "** # @ +" postfisso la piega indica che PhpDocBlock è all'interno (configurabile).
  • Le righe vuote dopo la correzione delle pieghe possono essere configurate per essere incluse nella piega.
  • Le pieghe nidificate sono supportate (funzioni all'interno di funzioni, ecc.)
  • Pieghevole variabili di classe private, pubbliche e protette + param. Multilinea
  • Foloding la classe ora è un'opzione disabilitata per impostazione predefinita.

Installalo scaricando lo .vimscript e inserendolo ~/.vim/ftplugin/php/(o usa il tuo gestore plugin, se ne usi uno). Si piegherà automaticamente, con cui è possibile disabilitare let g:DisableAutoPHPFolding = 1.


Proverò questo plugin. Sono sicuro che le funzionalità extra che fornisce saranno utili poiché a volte quando si scrive codice ci sono errori di sintassi. Grazie.
John Sonderson,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.