El plegado falla: vim no puede encontrar ningún pliegue

9

Estoy tratando de doblar un poco de código PHP, y he incluido una versión reducida de algunos de los códigos que estoy tratando de doblar al final de la publicación.

He probado los siguientes comandos vim, pero solo funcionan los siguientes comandos ex. Los comandos que no son ex no funcionan y producen un mensaje blanco sobre rojo en la línea de estado que dice: No puedo encontrar ningún pliegue.

: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

¿Cómo puedo obtener vim para encontrar los pliegues (por ejemplo, quiero doblar el código entre {y }, o entre (y ).

Aquí hay un código de muestra (solo para mostrar que es sintácticamente correcto y, por lo tanto, los comandos vim deberían funcionar):

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

}
John Sonderson
fuente

Respuestas:

9

Vim no viene con plegado de sintaxis PHP incorporado. Sin embargo, si todo su código está sangrado correctamente (como lo está su ejemplo), puede usar un método de plegado diferente:

:set foldmethod=indent
Perilla de la puerta
fuente
5

phpfolding.vim proporciona esto. La ventaja de esto :set foldmethod=indentes que es "más inteligente" porque analiza la sintaxis PHP real y no solo la sangría. Desde el archivo Léame:

  • Recuerda la configuración de pliegue. Si agrega funciones y ejecuta el script nuevamente, sus pliegues abiertos no se cerrarán.
  • No se confundirá con corchetes en bloques de comentarios o literales de cadena.
  • El plegado de las propiedades de clase con sus comentarios PhpDoc.
  • El plegado de todas las propiedades de clase en un pliegue.
  • Doblar el marcador original también se pliega.
  • Un "**" que fija el pliegue indica que PhpDoc está dentro (configurable).
  • Un "** # @ +" que fija el pliegue indica que PhpDocBlock está dentro (configurable).
  • Las líneas vacías que fijan los pliegues se pueden configurar para que se incluyan en el pliegue.
  • Se admiten pliegues anidados (funciones dentro de funciones, etc.)
  • Plegable privado, público, variables de clase protegidas + parámetro multilínea.
  • Seguir la clase ahora es una opción deshabilitada por defecto.

Instálelo descargando el .vimscript y colocándolo ~/.vim/ftplugin/php/(o use su administrador de complementos, si usa uno). Se plegará automáticamente, con lo que puedes desactivarlo let g:DisableAutoPHPFolding = 1.

Martin Tournoij
fuente
Probaré este complemento. Estoy seguro de que las características adicionales que proporciona serán útiles, ya que a veces al escribir código hay errores de sintaxis. Gracias.
John Sonderson