Wikia

Vim Tips Wiki

Changes: Align endif with corresponding if or ifdef directive

Edit

Back to page

(Adjust previous/next navigation)
(Comments)
 
Line 30: Line 30:
   
 
----
 
----
  +
  +
This would probably better implemented as an indentexpr (or an extension to an existing c++ indentexpr) instead of a map. (Although I'm not sure if you could use the same logic to do so.) But that would let you use the same logic for =.
  +
--[[User:Pydave|Pydave]] 19:16, April 30, 2012 (UTC)

Latest revision as of 19:16, April 30, 2012

Tip 251 Printable Monobook Previous Next

created May 24, 2002 · complexity basic · author Kartik Agaram · version 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

CommentsEdit

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.


This would probably better implemented as an indentexpr (or an extension to an existing c++ indentexpr) instead of a map. (Although I'm not sure if you could use the same logic to do so.) But that would let you use the same logic for =. --Pydave 19:16, April 30, 2012 (UTC)

Around Wikia's network

Random Wiki