Сокрытие кода. Топовый code folding. VSCode Расширение Explicit Folding
Зачем использовать folding (скрывать код)?
Чтобы во время работы:
Было проще удерживать важные куски кода в голове
Отображать только важное, а неважное — не отображать (= забрать у всякой чуши в коде возможность нас отвлекать / тратить энергию на распознавание того, что она делает)
Обычные fold-ы
❌ Не позволяют самостоятельно задать область для сокрытия кода
❌ Команды «Fold level 1» скрывают все на 1-ом уровне. Но есть более сложные функции, которым я бы хотел описать области сокрытия + задать им summary того, что они делают
Пары #region / #endregion
❌ Слишком много букв
Big Brain Giga Chad VSCode Расширение Explicit Folding
✅ Позволяют задать области сокрытия кода
✅ Можно указать человеческий summary
✅ Можно скрывать все кастомные fold-ы keyboard shortcut-ом
Демонстрирую
Мне так намного проще навигироваться в коде
Мои настройки VSCode
// VSCode Preferences: Open User Settings (JSON)
{
// ...
"editor.defaultFoldingRangeProvider": "zokugun.explicit-folding",
"explicitFolding.rules": {
"*": { "begin": "##", "end": "##" }
},
"[python]": {
"explicitFolding.rules": [
{ "begin": "##", "end": "##" },
{ "begin": "cog}}}", "end": "{{{end}}}" }
]
},
"[proto]": {
"explicitFolding.rules": [
{ "begin": "message", "end": "}" },
{ "begin": "cog}}}", "end": "{{{end}}}" }
]
},
// ...
}
Также я использую vscodevim и биндю (1) Space+0 для сокрытия этих кастомных fold-ов, (2) j — на gj, k — на gk, (3) l — l+editor.unfold, 0 — 0+editor.unfold, ^ — ^+editor.unfold, $ — $+editor.unfold
для cog тут заменил [[[]]] на {{{}}}, чтобы у меня кодген не отрабатывал
Ссылки
Расширение VSCode — Explicit Folding
В Neovim я использовал manual folding + биндил
<leader>0для сокрытия кода внутри всех пар{ ///+}(или# { ###+# }) с помощьюvim.fn.execute([[%g/\/\/\//silent!normal! $bbzf%]])(vim.fn.execute([[%g/###/silent!normal! $bbzf%]]))
- Безумие moment. Ходят легенды, что я в одном файле писал геймплей + рендер клона brotato. 14к+ строк. И довел игру до конца. Хочу этим сказать, что с помощью грамотных fold-ов, похоже, можно в голове удерживать намного более обширную картину происходящего в коде