views:

123

answers:

2

I'm currently fighting with Vim, I can't seem to make the indentation options do what I want.

Here are my settings, I put them at the bottom of .vimrc to make sure they take precedence. As you can see I'm going a little crazy, so I tried turning off almost everything:

set cindent
set cinkeys=o,O
set cinoptions=
set cinwords=
set indentexpr=

In most cases it seems to work fine, it does one indent after opening a block and everything is fine. But there is one case that is driving me crazy, when there is a { after a case statement, the next line is way too far indented:

switch () {
    case CASE: {
                   // <-- next line gets indented to here, why??
        // <-- should be indented to here

How can I make it stop doing this? TIA

+1  A: 

When I manually key in your set commands, I get no indentation whatsoever. Have you looked at the output of :set all to confirm your settings are not being overridden?

Note: This should probably be in a comment, but that option is presently disallowed to me.

rlduffy
I had a feeling something fishy was going on, but I don't see anything surprising when looking at `:set all`. Maybe it uses its own secret default when I leave those options blank? Don't know..
andy
Interestingly when I first tried it I was using GVim 7.2.269 on Windows. When I tried again using 7.2.330 under Linux my results matched your OP.
rlduffy
+3  A: 
:set cinoptions=l1

(that's the letter ell followed by a number one)

Look at :help cinoptions-values for the default string and descriptions of the different options.

ergosys
That did the trick, thanks!
andy