Vim 101: Windows

Windows are a viewport on a buffer. Opening Vim displays a single window, which is how most text editors generally appear. However, the real power of Vim, and something people miss out on in a lot of editors, is multiple windows. Windows can be split horizontally and vertically as needed, and then moved, resized, and closed.
Window commands start with CTRL-W, which makes it pretty easy to learn the basic commands:
CTRL-W s(window split): Split the current window horizontallyCTRL-W v(window vertical): Split the current window verticalCTRL-W w: Move to the next window,CTRL-W Wwill move to the previous oneCTRL-W k: Move the cursor up (hjklwork as expected)
To get help on window cursor movement and see all of the other commands, type :help window-move-cursor.
Window Management
Windows can be closed with CTRL-W q, and closing the last window will exit Vim.
Windows can be vertically resized by typing CTRL-W - and CTRL-W + -- this is sometimes useful when working with a lot of windows, and the current file demands more attention than the rest. Horizontal resizing uses < and >, which is easy to remember. Typing CTRL-W | makes the current window as wide as possible, and CTRL-W _ does the same thing for the height.
The resize commands accept a numerical argument, so typing CTRL-W 9+ would increase the current window by 9 lines.
Sometimes windows need to be moved. Movement uses the standard hjkl keys, but capitalised instead:
CTRL-W H: Move the current window to the left, using the full widthCTRL-W J: Move the current window to the bottom, using the full heightCTRL-W K: Move the current window to the top, using the full widthCTRL-W L: Move the current window to the right, using the full height
I don't often use these commands, but one related command I do use is CTRL-W T which opens the current window in a new tab. This can be useful when the buffer becomes too long or complex and deserves its own tab.
Mouse
If Vim has been set up to use a mouse, even in text mode, then windows can be resized by clicking and dragging its status line.