119 lines
5.0 KiB
Plaintext
119 lines
5.0 KiB
Plaintext
*winshift.txt* WinShift.nvim
|
|
|
|
Rearrange your windows with ease.
|
|
|
|
Author: Sindre T. Strøm
|
|
|
|
==============================================================================
|
|
|
|
INTRODUCTION *winshift.nvim* *winshift*
|
|
|
|
WinShift lets you move windows, not only around each other, but also in and
|
|
out of rows and columns.
|
|
|
|
USAGE *Win-Move-mode* *winshift-usage*
|
|
|
|
Enter Win-Move mode by calling `:WinShift`. This will target your current
|
|
window for moving. You can move the window either by using |hjkl| or the arrow
|
|
keys. You can move the window to any of the far ends of the viewport by
|
|
pressing one of `HJKL`, or shift + any arrow key. Exit Win-Move mode by
|
|
pressing `q` / `<esc>` / `<C-c>`.
|
|
|
|
CONFIGURATION *winshift-config*
|
|
|
|
Example configuration with default settings:
|
|
>
|
|
-- Lua
|
|
require("winshift").setup({
|
|
highlight_moving_win = true, -- Highlight the window being moved
|
|
focused_hl_group = "Visual", -- The highlight group used for the moving window
|
|
moving_win_options = {
|
|
-- These are local options applied to the moving window while it's
|
|
-- being moved. They are unset when you leave move mode.
|
|
wrap = false,
|
|
cursorline = false,
|
|
cursorcolumn = false,
|
|
colorcolumn = "",
|
|
},
|
|
keymaps = {
|
|
disable_defaults = false, -- Disable the default keymaps
|
|
win_move_mode = {
|
|
["h"] = "left",
|
|
["j"] = "down",
|
|
["k"] = "up",
|
|
["l"] = "right",
|
|
["H"] = "far_left",
|
|
["J"] = "far_down",
|
|
["K"] = "far_up",
|
|
["L"] = "far_right",
|
|
["<left>"] = "left",
|
|
["<down>"] = "down",
|
|
["<up>"] = "up",
|
|
["<right>"] = "right",
|
|
["<S-left>"] = "far_left",
|
|
["<S-down>"] = "far_down",
|
|
["<S-up>"] = "far_up",
|
|
["<S-right>"] = "far_right",
|
|
},
|
|
},
|
|
---A function that should prompt the user to select a window.
|
|
---
|
|
---The window picker is used to select a window while swapping windows with
|
|
---`:WinShift swap`.
|
|
---@return integer? winid # Either the selected window ID, or `nil` to
|
|
--- indicate that the user cancelled / gave an invalid selection.
|
|
window_picker = function()
|
|
return require("winshift.lib").pick_window({
|
|
-- A string of chars used as identifiers by the window picker.
|
|
picker_chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890",
|
|
filter_rules = {
|
|
-- This table allows you to indicate to the window picker that a window
|
|
-- should be ignored if its buffer matches any of the following criteria.
|
|
cur_win = true, -- Filter out the current window
|
|
floats = true, -- Filter out floating windows
|
|
filetype = {}, -- List of ignored file types
|
|
buftype = {}, -- List of ignored buftypes
|
|
bufname = {}, -- List of vim regex patterns matching ignored buffer names
|
|
},
|
|
---A function used to filter the list of selectable windows.
|
|
---@param winids integer[] # The list of selectable window IDs.
|
|
---@return integer[] filtered # The filtered list of window IDs.
|
|
filter_func = nil,
|
|
})
|
|
end,
|
|
})
|
|
<
|
|
|
|
COMMANDS *winshift-commands*
|
|
|
|
*:WinShift*
|
|
:WinShift [direction]
|
|
When called without [direction]: starts Win-Move mode
|
|
targeting the current window for moving. For how to
|
|
use Win-Move mode, see |Win-Move-mode|. With
|
|
[direction] perform a one-shot move operation on the
|
|
current window, moving it in the given direction.
|
|
[direction] can be one of:
|
|
`left`, `right`, `up`, `down`, `far_left`,
|
|
`far_right`, `far_up`, `far_down`
|
|
|
|
The `far_` variants will move the window to the far
|
|
end of the viewport in the given direction.
|
|
|
|
:WinShift swap
|
|
Swap the current window with another. When this
|
|
command is called, you'll be prompted to select the
|
|
window you want to swap with. A selection is made by
|
|
pressing the character displayed in the statusline of
|
|
the target window. The input is case-insensitive.
|
|
|
|
CAVEATS *winshift-caveats*
|
|
|
|
Moving through windows with 'winfixwidth' and / or 'winfixheight' can be a bit
|
|
wonky. It will work, but it can be a bit hard to follow the movement, and the
|
|
fixed window might end up with different dimensions after. This is simply a
|
|
consequence of vim being forced to resize the window due to there not being
|
|
enough space to adhere to the fixed window's preferred dimensions.
|
|
|
|
vim:tw=78:ts=8:ft=help:norl:
|