Vim tab processing can be configured, so it is not a good description of what you want to do, but there is enough information in the rest of your description. Mostly.
The easiest way to handle tabs is to never use them. So don't be surprised if setting up tabs the way you like takes a little work.
You set the Tab key to insert a tab character. This is not the case in Emacs: typically, the Tab key is used to indent the current line. What you did is enough for the default value, but language specific modes can still indent Tab . I assume from your inclusion of c-basic-indent that you are working on C code; so you need to specify C mode so you don't want Tab to back out. This should do it:
(eval-after-load "cc-mode" '(define-key c-mode-map (kbd "TAB") 'self-insert-command))
Another thing you come across is that, by default, the Backspace key tries to go back one column, not one character. The following should remove one character:
(global-set-key (kbd "DEL") 'backward-delete-char) (setq c-backspace-function 'backward-delete-char)
source share