And all this with nice animations!
This plugin requires next dependencies:
Also, if you enable animations, is recommended to set winwidth
, winminwidth
options to some reasonable and equal values (between 5 and 20 will be OK), and
disable equalalways
option.
You can install and setup windows.nvim with packer plugin manager using next snippet:
with animation
use { "anuvyklack/windows.nvim",
requires = {
"anuvyklack/middleclass",
"anuvyklack/animation.nvim"
},
config = function()
vim.o.winwidth = 10
vim.o.winminwidth = 10
vim.o.equalalways = false
require('windows').setup()
end
}
without animation
use { "anuvyklack/windows.nvim",
requires = "anuvyklack/middleclass",
config = function()
require('windows').setup()
end
}
Read about plugins configuration in the documentation.
:WindowsMaximize
Maximize current window. If the window is already maximized, then restore original sizes. When go to another window while current is maximized - all original sizes will be restored. If the window will be closed while being maximized, then all other windows would be equalized.
:WindowsMaximizeVertically
Maximize width of the current window. Almost the same as :vertical resize
(see :help CTRL-W_bar
) but with animation.
:WindowsMaximizeHorizontally
Maximize height of the current window. Almost the same as :resize
(see :help CTRL-W__
) but with animation.
:WindowsEqualize
Equalize all windows heights and widths width animation.
(see :help CTRL-W_=
)
:WindowsEnableAutowidth
:WindowsDisableAutowidth
:WindowsToggleAutowidth
Enable, disable or toggle auto-width feature.
If you want a keymaps thees are a fitting choice:
local function cmd(command)
return table.concat({ '<Cmd>', command, '<CR>' })
end
vim.keymap.set('n', '<C-w>z', cmd 'WindowsMaximize')
vim.keymap.set('n', '<C-w>_', cmd 'WindowsMaximizeVertically')
vim.keymap.set('n', '<C-w>|', cmd 'WindowsMaximizeHorizontally')
vim.keymap.set('n', '<C-w>=', cmd 'WindowsEqualize')
If you have any proposals, what else can be done with this mechanics, you are welcome to open an issue.