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