Vim plugin for compiling, uploading, and debugging arduino sketches. It makes use of the Arduino IDE's commandline interface (new in 1.5.x).
vim-arduino works with Pathogen
cd ~/.vim/bundle/
git clone https://github.com/stevearc/vim-arduinoand vim-plug
Plug 'stevearc/vim-arduino'You also need to download the Arduino
IDE (version 1.5 or newer) and make
sure the arduino command is in your PATH.
The docs have detailed information about configuring vim-arduino here.
The main commands you will want to use are:
:ArduinoChooseBoard- Select the type of board from a list.:ArduinoChooseProgrammer- Select the programmer from a list.:ArduinoChoosePort- Select the serial port from a list.:ArduinoVerify- Build the sketch.:ArduinoUpload- Build and upload the sketch.:ArduinoSerial- Connect to the board for debugging over a serial port.:ArduinoUploadAndSerial- Build, upload, and connect for debugging.
To make easy use of these, you may want to bind them to a key combination. You
can put the following in .vim/ftplugin/arduino.vim:
nnoremap <buffer> <leader>am :ArduinoVerify<CR>
nnoremap <buffer> <leader>au :ArduinoUpload<CR>
nnoremap <buffer> <leader>ad :ArduinoUploadAndSerial<CR>
nnoremap <buffer> <leader>ab :ArduinoChooseBoard<CR>
nnoremap <buffer> <leader>ap :ArduinoChooseProgrammer<CR>If you want to add the board type to your status line, it's easy with the following:
" my_file.ino [arduino:avr:uno]
function! MyStatusLine()
return '%f [' . g:arduino_board . ']'
endfunction
setl statusline=%!MyStatusLine()Or if you want something a bit fancier that includes serial port info:
" my_file.ino [arduino:avr:uno] [arduino:usbtinyisp] (/dev/ttyACM0:9600)
function! MyStatusLine()
let port = arduino#GetPort()
let line = '%f [' . g:arduino_board . '] [' . g:arduino_programmer . ']'
if !empty(port)
let line = line . ' (' . port . ':' . g:arduino_serial_baud . ')'
endif
return line
endfunction
setl statusline=%!MyStatusLine()Note: if you are using the 'airline' plugin for the status line, you can display this custom status part instead of the filename extension with:
autocmd BufNewFile,BufRead *.ino let g:airline_section_x='%{MyStatusLine()}'Everything is under the MIT License except for the wonderful syntax file, which was created by Johannes Hoff and copied from vim.org and is under the Vim License.