Vim logo vim online Vim Book Ad

basic Tip #251: c/c++: align #endif with corresponding #if/#ifdef

 tip karma   Rating -1/1, Viewed by 502 

created:   May 24, 2002 14:28      complexity:   basic
author:   Kartik Agaram      as of Vim:   5.7

If you try to impose any sort of alignment on your preprocessor directives, rather than just starting them on column 0, this mapping will align the #endif 'correctly' when you type '#en', start a new line, and bring you back to the correct alignment to edit code.

inoremap <buffer> #en X<BS><Esc>?#if<CR>"zy0^Og0"zpDa#endif<CR>X<BS><Esc>?#end?-1<CR>^"zy0^O0"zpDa

I am reasonably sure this is insensitive to vim options...

 rate this tip  Life Changing Helpful Unfulfilling 

<<One big window | python script to align statements >>

Additional Notes

Kartik, October 24, 2002 23:34
This tip is currently at -1/1 - I'm not sure why, since I use it a lot. In any case, here's an updated version that handles nested #if blocks.

inoremap #en #endif<Esc>bbd0%y0<C-o>0PA

I've stopped positioning the cursor on the next line because I found myself doing <Esc>dd too often.

In a perfect world, we wouldn't have to deal with code with such a high density of preprocessor directives as to make indenting them, and therefore this tip, useful.
If you have questions or remarks about this site, visit the vimonline development pages. Please use this site responsibly.
Questions about Vim should go to [email protected] after searching the archive. Help Bram help Uganda.
SourceForge Logo