How to preserve indent after pressing Esc in Vim

vim

Solution

Alright, I figured this out.

Based on Edan Maor's answer, S or cc should enter insert mode with the proper level of indentation. ...except when it doesn't :)

This works under two circumstances.

- when `cindent` is set, it will insert indent based on C formatting rules This may prove annoying when editing non C-like files.

- when `indentexpr` is set.

I found that the best solution is to have this is my `.vimrc`

set autoindent
set indentexpr=GetIndent()

function GetIndent()
   let lnum = prevnonblank(v:lnum - 1)
   let ind = indent(lnum)
   return ind
endfunction

Now when I press S or cc, it will insert the same indent as on the previous non-blank line.

Problem

I have `set autoindent` I go to a line, press A and `<CR>` which gets me to the next line and inserts an indent. However if I press Esc the cursor jumps to the beginning of the line and the indent is gone. I have to go about and press tabs to get to the right place again. I know the help says: ``` If you do not type anything on the new line except <BS> or CTRL-D and then type <Esc>, CTRL-O or <CR>, the indent is deleted again. ``` Is there a way to disable this, or at least a workaround?

Original source