gvim写verilog环境搭建——将文本编辑器客制化定义为你自己的ide
概述
本文将分享使用gvim写verilog一系列的方便编码工具,将vim打造成一个ide(ide 是 integrated development environment 的缩写,中文称为集成开发环境,用来表示辅助程序员开发的应用软件,是它们的一个总称。)目的是使得编码过程中任何让你觉得繁琐的,重复性劳动,全部交给工具做,帮助更快更好的实现你的目标。这里笔者个人经验感觉哈,若是有些你觉得感觉繁琐的,愚蠢的操作,一定时没有使用正确的方式去做这件事~可以思考优化下做事的方式
关于vim的版本建议linux下使用8.2以上的版本,windows使用最新的版本。更高的版本vim进行了很多优化,其中重要的两个:1,支持插件管理(可以使得使用管理插件的方式更为便捷) 2,加入了异步执行命令的机制。关于版本的问题更详细的可以查看vim.org上有关版本更新的日志。这里不多进行赘述。
特性
组为个性化的定制,笔者定义实现的所有功能如下所示:
- 基本的映射
- 快速生成端口列表(input、output)
- 自动生成实例化模板,自动对齐
- 定义版权,作者,模块名称
- 状态栏配置,buffer栏的快速切换,删除
- 括号自动补全,括号颜色特征不同
- 目录结构显示
- 中文doc文件代替
- 查找单词在当前目录下其他文件下的使用位置
- 自动仿真脚本模板
- 自动实现顶层集成
- 自动生成端口列表
- 自动生成仿真代码脚本优化
- 基本的语法检查功能
完整效果演示
下图是展示vim的完整配置使用展示图,包括文本编辑区的代码高亮,括号高亮等,buffer的展示,代码error,warning的展示,状态栏的信息展示,中文doc文件展示,文件目录窗口等。
实现方式与演示
基本的映射
这部分就是除去函数,复杂映射之外,更为基础的vimrc配置。关于vimrc的介绍请参见gvim基础教程——vimscript编程初步,下图是基本的配置图,所有的配置与使用方式均有相关的注释。
- 实现了将
jk
映射到esc
。这是唯一的基本映射 - 快速编辑执行vimrc配置的快捷键
nnoremap <leader>ev :vsplit $myvimrc<cr>
nnoremap <leader>sv :source $myvimrc<cr>
- 添加折叠功能,使得整体配置看起来相对独立清晰。移动到折叠的行,使用za可以打开关闭折叠。
快速生成端口列表(input、output)
功能演示
实现背景
在编码的时候,我们已经有了接口信息,一般在设计详述中包括位宽,信号名称,输入输出,功能描述这些信息,我们只需要将这些信息经过简单的处理,即可简单的实现端口的定义。处理的形式如上图功能演示部分的形式。这个功能很简单,功能实现使用的是较为复杂的映射来实现的。可自行参考配置实现的方式。
使用方式
使用,ii
、,oo
来分别实现对输入输出的定义
自动生成实例化模板,自动对齐
功能演示
实现背景
使用方式
定义版权,作者,模块名称
功能演示
实现背景
使用方式
状态栏配置,buffer栏的快速切换,删除
括号自动补全,括号颜色特征不同
目录结构显示
中文doc文件代替
查找单词在当前目录下其他文件下的使用位置
自动仿真脚本模板
自动实现顶层集成
自动生成端口列表
自动生成仿真代码脚本优化
基本语法检查功能
该功能使用的插件是ale(asynchronous lint engine 异步lint引擎),该插件是非常优秀的异步代码检查工具,支持众多编码语言。这里的异步是指他的进行过程是在后台自行进行的,不会影响到你当前对于vim的操作,vim在8.1版本后推出了异步执行命令的机制,以此为基础的代码包括大名鼎鼎的youcompleteme, ale。ale项目地址如下:https://github.com/dense-analysis/ale,点击这里访问。个人理解就是插件会调用可以使用的linter(语法检查工具),然后将其输出的检查信息整理展示出来,达到一个语法检查的目的。其中linter需要自行安装。跟详细的使用以及关于ale的介绍见这里 ale的基本介绍、使用与配置
其他tips
更聪明的自动补全功能
任意自加数的生成
遇见插件在linux下报错^m的问题
注意将tab替换为空格键
查看vim版本,支持的接口等
发表评论