Ubuntu下使用vim开发arduino

date: 2014.11.22; modification:2014.12.14

目录:

1 背景

由于是vim的重度使用者, 在试了一下linux下的arduino IDE后, 实在觉得不适应. 所以在网上找了一下配合vim的使用方法, 貌似还不只一种. 本文参考的是该页面:

Using Vim for Arduino development, 文中提到了两种方法, 他描述的旧的方法, 但是据说旧的方法已经不维护了, 所以我按照那篇文中的新方法来做的. 新方法是用的ino这个工具. 项目路径在: https://github.com/tclem/vim-arduino

本文写作的时候, 该方法才只是0.1.0版本, 不过是可以用的. 其实它就是在vim封装了几个ino命令.

本文基于: arduino UNO开发板, 据说如果是其他的型号, 需要自己来配配置文件, UNO可以直接用(确实可以).

2 安装vim-arduino

2.1 安装依赖软件

sudo apt-get install pathogen
sudo apt-get install python-pip
sudo pip install ino

2.2 安装vim-arduino

在这里下载: https://github.com/tclem/vim-arduino

然后将其中的plugin拷贝到vim的插件目录, 一般是~/.vim

注意: 本文写作的时候, 该工具只绑定了几个快捷键, 并没有内置语法高亮, 所以还需要另外再找语法高亮文件(有点坑的说). 本文后面会提供一种高亮下载.

3 使用vim-arduino

3.1 创建arduino(ino)工程

创建空文件夹(如果不是空文件夹, ino不让创建工程):

mkdir blink
cd blink

创建工程:

ino init -t blink

-t 创建一个控制arduino UNO板子上LED灯闪烁的程序. 如果不加参数, 则创建一个空工程.

如果不创建ino工程, ino是不给编译的, 说没有ino工程. 个人试了一下, 所谓的创建工程, 貌似就是得有个src目录, 里面放着个.ino的文件. 作者试了一下, 自己创建个src, 然后把ino文件放进去, 也可以用.

3.2 vim快捷键

`<Leader>ac` - Compile the current sketch. 编译
`<Leader>ad` - Compile and deploy the current sketch. 编译并烧写到arduino
`<Leader>as` - Open a serial port in `screen`. 开启串口

<Leader>as 这条快捷键映射, 貌似是在mac上用的, 我这里linux用不了, 后来发现直接安装screen命令, 然后执行

screen /dev/ttyACM0

就可以了, 其中/dev/ttyACM0是我的arduino UNO的那个设备.

4 语法高亮

4.1 下载高亮文件

http://www.vim.org/scripts/script.php?script_id=2654

4.2 使用高亮

将下载下载的arduino.vim放到高亮目录下. 一般是~/.vim/syntax

编辑 ~/.vim/filetype.vim, 添加如下两行, 使vim能识别.ino和.pde文件:

au BufRead,BufNewFile *.pde set filetype=arduino
au BufRead,BufNewFile *.ino set filetype=arduino

然后就可以看到高亮了.

5 tagbar配置

tagbar是一个taglist的替代品, 比taglist更适合c++使用, 函数能够按类区分, 支持按类折叠显示等, 显示结果清晰简洁, 强烈推荐, 下载地址如下:

http://www.vim.org/scripts/script.php?script_id=3465

更多信息请自行百度google, 再次只贴出我对于arduino的配置. 这个配置是我自己捣鼓出来的, 如果您发现有bug或者更好的配置, 欢迎邮件到页面最下方的邮箱告知.

let g:tagbar_autoclose = 0
let g:tagbar_autofocus = 1
let g:tagbar_sort = 0
let g:tagbar_compact = 1
let g:tagbar_foldlevel = 1
let g:tagbar_type_arduino = {
    \ 'ctagstype' : 'c++',
    \ 'kinds'     : [
        \ 'd:macros:1:0',
        \ 'p:prototypes:1:0',
        \ 'g:enums',
        \ 'e:enumerators:0:0',
        \ 't:typedefs:0:0',
        \ 'n:namespaces',
        \ 'c:classes',
        \ 's:structs',
        \ 'u:unions',
        \ 'f:functions',
        \ 'm:members:0:0',
        \ 'v:variables:0:0'
    \ ],
    \ 'sro'        : '::',
\ }

6 参考文献

http://grantlucas.com/posts/2012/09/using-vim-arduino-development

http://inotool.org/quickstart