Need help with vim-arduino?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

168 Stars 13 Forks MIT License 58 Commits 8 Opened issues


Vim plugin for compiling and uploading arduino sketches

Services available


Need anything else?

Contributors list


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

and vim-plug

Plug 'stevearc/vim-arduino'

You also need to download the Arduino IDE (version 1.5 or newer) and make sure the

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.
  • :ArduinoInfo
    - Display internal information. Useful for debugging issues with vim-arduino.

To make easy use of these, you may want to bind them to a key combination. You can put the following in

nnoremap  am :ArduinoVerify
nnoremap  au :ArduinoUpload
nnoremap  ad :ArduinoUploadAndSerial
nnoremap  ab :ArduinoChooseBoard
nnoremap  ap :ArduinoChooseProgrammer

If you wish to run these commands in tmux/screen/some other location, you can make use of vim-slime:

let g:arduino_use_slime = 1

Status Line

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 . ']'
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 . ')'
  return line
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 and is under the Vim License.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.