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-arduino
and 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.