I develop using Vim as my IDE, it's very handy, but it has taken me a while to get there.
I've recently spent time cleaning my vim plugins, now everything is fetched via
Anyway, let's get on with it.
Two very crucial plugins for developing any C or C++, not just AVR-C, is YouCompleteMe and Ultisnips.
Both these plugins work very well together with a bit of configuring:
" Ycm vs ultisnips let g:ycm_key_list_select_completion= let g:ycm_key_list_select_previous_compltetion= let &path = "/usr/avr/include,/usr/include,./" au BufEnter * exec "inoremap <silent> " . g:UltiSnipsJumpBackwardTrigger . " <C-R>=g:UltiSnips_Reverse()<cr>" let g:UltiSnipsJumpBackwardTrigger="<s-tab>"
The important part here being
let &path = "/usr/avr/include,/usr/include,./". It adds
/usr/include and /usr/avr/include to YCMs path where it looks for things to complete with.
When you're developing microcontroller code you very often have the datasheet for the microcontroller
in question open at the same time, because let's face it; no one remembers all those registers in their head :).
For this I use Open-Pdf and a simple mapping that saves me a few keystrokes. I save all the datasheets of the processors/components that I work with in ~/Documents/Datasheets which is then linked to my ownCloud-folder so that I can have the same set of Datasheets on all my devices. The mapping is nothing more than a timesaver:
map <Leader>d :Pdf ~/Documents/Datasheets/.
It certainly doesn't look perfect, but it's quite handy to be able to search for registers and the like
from within vim directly.