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