fold-cycle.nvim
August 31, 2025 ยท View on GitHub
This neovim plugin allows you to cycle folds open or closed.
If you find any problems or have suggestions for improvements, do open an issue! :)
This plugin is inspired by and borrows (heavily!) from vim-fold-cycle.
Installation
With packer:
use {
'jghauser/fold-cycle.nvim',
config = function()
require('fold-cycle').setup()
end
}
Functionality
The following functions expose the functionality of the plugin:
require('fold-cycle').open(): Open the next level of (nested) foldsrequire('fold-cycle').close(): Close the next level of (nested) foldsrequire('fold-cycle').open_all(): Open a fold and all its nested foldsrequire('fold-cycle').close_all(): Close a fold and all its nested foldsrequire('fold-cycle').toggle_all(): Toggle a fold and its nested folds closed/open
See the next section for how to create keymaps for these functions.
Configuration
The setup function allows adjusting various settings. By default it sets the following:
require('fold-cycle').setup({
open_if_max_closed = true, -- closing a fully closed fold will open it
close_if_max_opened = true, -- opening a fully open fold will close it
})
The plugin doesn't set any keymaps by default. I use the following:
vim.keymap.set('n', '<tab>',
function() return require('fold-cycle').open() end,
{silent = true, desc = 'Fold-cycle: open folds'})
vim.keymap.set('n', '<s-tab>',
function() return require('fold-cycle').close() end,
{silent = true, desc = 'Fold-cycle: close folds'})
vim.keymap.set('n', 'zC',
function() return require('fold-cycle').close_all() end,
{remap = true, silent = true, desc = 'Fold-cycle: close all folds'})