Auto-indent spaces with C in vim?

Up vote 23 down vote favorite 11 share g+ share fb share tw.

I've been somewhat spoiled using Eclipse and java. I started using vim to do C coding in a linux environment, is there a way to have vim automatically do the proper spacing for blocks? So after typing a { the next line will have 2 spaces indented in, and a return on that line will keep it at the same indentation, and a } will shift back 2 spaces?

C vim coding-style vi link|improve this question asked Sep 18 '08 at 22:36zxcv79441322 64% accept rate.

These two commands should do it: :set autoindent :set cindent For bonus points put them in a file named . Vimrc located in your home directory on linux.

That's awesome. This will definitely save my spacebar and garner greater vim appreciation from me. Thanks!

– zxcv Sep 18 '08 at 22:49 7 I would also recommend putting those into ~. Vim/ftplugin/c. Vim so that you're not using cindent all the time, but only for C/C++ files.

– graywh Jan 4 '09 at 21:05 @graywh: What about for pl, php, cpp, as, java, and all the other files I want to have the same indenting? Do I need to create a separate settings file for each one? – davr Sep 22 '10 at 18:06 5 I rely Vim's bundled indent scripts (:filetype indent on) which is much better than just using 'cindent' always.

– graywh Sep 24 '10 at 19:08 why filetype indentation is better than using cindent is well explained here: vim.wikia.com/wiki/… – Jayen Mar 30 at 6:04.

I wrote all about tabs in vim, which gives a few interesting things you didn't ask about. To automatically indent braces, use: :set cindent To indent two spaces (instead of one tab of eight spaces, the vim default): :set shiftwidth=2 To keep vim from converting eight spaces into tabs: :set expandtab If you ever want to change the indentation of a block of text, use . I usually use this in conjunction with block-select mode (v, select a block of text, ).

(I'd try to talk you out of using two-space indentation, since I (and most other people) find it hard to read, but that's another discussion. ).

Very nice blog. I'm still fairly new to vim, nice to know there's good resources out there though. – zxcv Sep 18 '08 at 22:51 2 You also missed changing softtabstop in addition to shiftwidth.

– graywh Jan 4 '09 at 21:01.

A lot of vim's features (like autoindent and cindent) are turned off by default. To really see what vim can do for you, you need a decent ~/.vimrc. A good starter one is in $VIMRUNTIME/vimrc_example.vim.

If you want to try it out, use :source $VIMRUNTIME/vimrc_example. Vim when in vim. I'd actually suggest just copying the contents to your ~/.

Vimrc as it's well commented, and a good place to start learning how to use vim. You can do this by :e $VIMRUNTIME/vimrc_example. Vim :w!

~/. Vimrc This will overwrite your current ~/. Vimrc, but if all you have in there is the indent settings Davr suggested, I wouldn't sweat it, as the example vimrc will take care of that for you as well.

For a complete walkthrough of the example, and what it does for you, see :help vimrc-intro.

Simply run: user@host:~ $ echo set autoindent >> .vimrc.

It works. – JamesM-SiteGen May 21 '11 at 0:54.

I think the best answer is actually explained on the vim wikia: vim.wikia.com/wiki/Indenting_source_code Note that it advises against using "set autoindent. " The best feature of all I find in this explanation is being able to set per-file settings, which is especially useful if you program in python and C++, for example, as you'd want 4 spaces for tabs in the former and 2 for spaces in the latter.

And always remember this venerable explanation of Spaces + Tabs: jwz.org/doc/tabs-vs-spaces.html.

I don't follow how not using the TAB character, and filling with hard-coded spaces instead, solves everyone's problems. That would make it impossible, for example, to be able to open a file and have the width of its indents appear according to your own preferences. – thomasrutter May 4 '09 at 1:58 1 This guy's solution is much better :) blogs.msdn.com/cyrusn/archive/2004/09/14... – thomasrutter May 4 '09 at 2:00.

According to the help, cindent is better than smartindent, but only works for C-like code. – thomasrutter May 4 '09 at 1:28 smartindent is deprecated (was only for C-like code, too). Filetype indent scripts are much better.

– graywh Sep 24 '10 at 19:10 @graywh said it all. ( -1 ) – JamesM-SiteGen May 21 '11 at 0:55.

I cant really gove you an answer,but what I can give you is a way to a solution, that is you have to find the anglde that you relate to or peaks your interest. A good paper is one that people get drawn into because it reaches them ln some way.As for me WW11 to me, I think of the holocaust and the effect it had on the survivors, their families and those who stood by and did nothing until it was too late.

Related Questions