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