VIM: свернуть все блоки кода внутри моего текущего блока - PullRequest
0 голосов
/ 05 января 2012

В большом PHP-приложении я хотел бы свернуть все блоки кода внутри моего текущего блока, но не сам текущий блок.Например:

if ($something) {

    if ($another) {
        // some code;
    }

    | <--THIS IS MY CURRENT CURSOR POSITION

    if ($yetAnother) {
        // more code;
    }

    if ($stillAnother) {
        // yet more code;
    }

}

Как мне свернуть три внутренних if с, но не внешние if?

Спасибо!

Ответы [ 3 ]

4 голосов
/ 05 января 2012

Проверьте, работает ли это:

:set foldmethod=marker foldmarker={,} foldlevel=2
2 голосов
/ 05 января 2012

Если я правильно понял вопрос, изменение складывания описано в заявлении эквивалентно следующей последовательности действий.

  1. Закрыть текущую складку (внутри которой находится курсор).
  2. Рекурсивно закройте все складки внутри только что закрытой.
  3. Открыть текущий сгиб, держа внутренние сгибы закрытыми.

Отображение

:nnoremap <silent> <leader>f m`zcVzCzo``

, следовательно, запускает команды, соответствующие вышеупомянутым шагам, сохранение позиции курсора до их выполнения и восстановление после.

1 голос
/ 05 января 2012

Самое близкое, что я могу придумать, это zMzv . Это закроет все сгибы ( zM ), а затем откроет достаточно сгибов, чтобы увидеть линию, на которой находится курсор ( zv ). При необходимости вы можете сопоставить это с более короткой командой.

Это не совсем то, что вы просили, так как оно закроет все сгибы за пределами вашего внешнего if заявления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...