Buffer vs Window vs Tab

Three concepts most editors collapse into one. Vim keeps them separate.

A buffer is a file in memory. A window is a viewport onto a buffer. A tab is a layout of windows. Most editors call all three 'tabs' โ€” that's why Vim's model feels strange at first.

Most editors give you one concept โ€” call it a tab, a panel, whatever โ€” and that one thing represents "a file you're editing." Vim breaks it into three. Once you see the split, the rest of Vim's window model snaps into place.

Concept Other editors call it Vim primary commands
Buffer File / tab :ls, :b, :e, :bd
Window Pane / split Ctrl-W family, :sp, :vs
Tab Workspace / project :tabnew, gt, gT
Option Meaning Typical values
modified Buffer has unsaved changes. Vim refuses to abandon it without ! or :hide. on / off (auto-set)
modifiable Whether the user is allowed to edit. Off = every edit beeps with E21. on / off
readonly Soft block โ€” you can override with :w!, unlike modifiable. on / off
buflisted Whether :ls and buffer-cycling commands include it. on / off
buftype Kind of buffer. Most are normal (empty string); special kinds change save/quit semantics. "", nofile, acwrite, quickfix, terminal, prompt, help, nowrite

See also: Buffers, Tabs, Creating Splits, Navigating Windows