====== VIM - Config - Indentation - Automatic Indentation Methods ====== There are a number of methods enabling automatic indentation in VIM, ranging from fairly "stupid" and unintrusive ones, like **autoindent** and **smartindent**, to complex ones such as **cindent** and custom indentation based on filetype using **indentexpr**. * The amount of indentation used for one level is controlled by the **shiftwidth** option. (See above.) ---- ===== autoindent ===== **autoindent** does nothing more than copy the indentation from the previous line, when starting a new line. * It can be useful for structured text files, or when you want to control most of the indentation manually, without VIM interfering. * **autoindent** does not interfere with other indentation settings, and some file type based indentation scripts even enable it automatically. ---- ===== smartindent and cindent ===== **smartindent** automatically inserts one extra level of indentation in some cases, and works for C-like files. **cindent** is more customizable, but also more strict when it comes to syntax. **WARNING:** **smartindent** and **cindent** might interfere with file type based indentation, and should never be used in conjunction with it. When it comes to C and C++, file type based indentations automatically sets **cindent**, and for that reason, there is no need to set **cindent** manually for such files. * In these cases, the **cinwords**, **cinkeys** and **cinoptions** options still apply. Generally, **smartindent** or **cindent** should only be set manually if you're not satisfied with how file type based indentation works.