How to use only tab (not space) in vim

VimIndentation

Vim Problem Overview


I prefer to use tab than white space(may be a little different from most of others)

But I found, when I hit Enter at the end of line, it will add some white spaces, but not tab. So, I have to delete them and press tab.

I want to know how to set vim as:

  1. use only tab to indent the lines
  2. a tab looks like 4-spaces, but actually is a tab
  3. when hit enter at the end of a line, the new line is started with only tabs

I've googled for this for a while, but not found a good answer. Thank you in advance


UPDATE

The answer @Alok has provided works well in most of cases. But I just found, sometimes, it depends on the file type. For example, if you are editing a haml file, and there is a haml.vim in your vimfiles/indent/, then all the tabs will be converted to space. So if you want it to be tab only, you should modify(or delete) the corresponding indent file.

Vim Solutions


Solution 1 - Vim

The settings you are looking for are:

set autoindent
set noexpandtab
set tabstop=4
set shiftwidth=4

As single line:

set autoindent noexpandtab tabstop=4 shiftwidth=4

autoindent can be replaced with smartindent or cindent, depending upon your tastes. Also look at filetype plugin indent on.

http://vim.wikia.com/wiki/Indenting_source_code

Solution 2 - Vim

Late to the discussion, just for anyone who struggled to force the use of tabs. With the current version of vim (>8) it was required to set:

:set noet ci pi sts=0 sw=4 ts=4

which expands to:

:set noexpandtab
:set copyindent
:set preserveindent
:set softtabstop=0
:set shiftwidth=4
:set tabstop=4

We can also use this setup with only specific file types, taking advantage of setlocal:

autocmd FileType c,cpp,java,python setlocal noet ci pi sts=0 sw=4 ts=4

For furher reference, see: https://vim.fandom.com/wiki/Indent_with_tabs,_align_with_spaces

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionFreewindView Question on Stackoverflow
Solution 1 - VimAlok SinghalView Answer on Stackoverflow
Solution 2 - VimwiredolphinView Answer on Stackoverflow