• Stars
    star
    408
  • Rank 105,946 (Top 3 %)
  • Language
    Lua
  • License
    MIT License
  • Created over 2 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Automatically expand width of the current window. Maximizes and restore it. And all this with nice animations!

windows.nvim

  • Automatically expand width of the current window;
  • Maximizes and restores the current window.

And all this with nice animations!

2022-09-17.00-30-24.mp4

Installation and setup

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
    }

Configuration

Read about plugins configuration in the documentation.

Commands

  • :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.

Keymapings

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')

Proposals

If you have any proposals, what else can be done with this mechanics, you are welcome to open an issue.