第六章 FPGA至简设计原理-高效编辑器GVIM

本文详细介绍了GVIM这款FPGA工程师的高效编辑工具,包括其基本和高级操作技巧。内容涵盖命令模式、编辑模式和列操作模式的转换,以及补全、跳转、搜索和删除复制等常用命令。此外,还讲解了替换、列删除和列插入等进阶功能,帮助读者提升代码编辑效率。
摘要由CSDN通过智能技术生成

第六章 FPGA至简设计原理-高效编辑器GVIM

GVIM 是类似于记事本的代码编辑工具,但相比于记事本其输入效率更高,可以更好的提升工作效率。由于 GVIM 具有丰富的代码补全、编译及错误跳转等便于编程的功能,其在 IC 开发领域得到了广泛应用,也为学习 FPGA 工程提供了助力。GVIM 是一款 FPGA 工程师常用的软件,本章节分享一下该软件的使用方法以及小技巧。本书的所有设计代码都是在此软件上完成的,因此希望同学们可以熟练掌握其使用方法,为自己的 FPGA工程师之路打好基础。

本章节详细讲述了使用 GVIM 的必备技巧,掌握这些技巧是使用 GVIM 的前提。如果可以掌握基本技巧,在不追求效率的前提下就足以进行所有设计。对于初学者来讲,一定要认真学习本章节,牢记本章所讲的技巧。打好基础之后才能熟能生巧,只有在最开始将知识掌握扎实才能提高后续程序设计的效率。

GVIM 软件的操作界面如下所示,可以看出设计界面直观简洁,易于操作。
在这里插入图片描述
GVIM 软件官方一共有四种操作模式,分别是命令模式(command-mode)插入模式(insert-mode)可视模式(visual-mode)正常模式(normal-mode)。但是为了方便教学和学习,至简设计法将 GVIM 界面分为三种模式,分别是命令模式、编辑模式和列操作模式。这种划分虽然不是很严谨,但是可以更好的学习熟悉软件。后续内容分享中本书都会采用至简设计法划分的三种模式,请同学们注意区分。下面就开始对各模式进行逐一学习。

首先学习命令模式,顾名思义此时键盘上所有的按键都是各种不同的操作命令,因此只能观看代码或者发出命令,而无法像记事本一样进行文本编辑。这时的软件界面是粗光标闪烁的状态,如下图所示。

在这里插入图片描述接下来学习编辑模式,依旧可以按照字面意思进行理解,此模式下的 GIVM 就相当于记事本,在键盘上的所有按键都可以对文件进行输入。此时软件界面为细光标闪烁的状态,并且下方命令栏显示“插入”,如下图所示。

在这里插入图片描述
最后介绍列操作模式,此模式下可以在块内实现列对齐的同时对相应块进行添加空格、字符、缩进等操作。此模式下选择的块为加粗阴影显示,如下图所示。
在这里插入图片描述
在 GIVM 软件中的三种模式可以进行互相转换。GVIM 默认模式为命令模式,在此模式下按“i”进入编辑模式,按“Ctrl+q”进入列操作模式。

在这里插入图片描述
在编辑模式下按“Esc”可以进入命令模式,选中想要操作的行按“Ctrl+q”可以进入列操作模式。这里需要注意,编辑模式下单独输入“Ctrl+q”无法进入列操作模式,需要使用鼠标协助,如下图所示,对想要编辑的块进行选择后在按下“Ctrl+q”方可进入列操作模式,转换关系如图 2.1- 7。
在这里插入图片描述
在这里插入图片描述在列操作模式下,按“Esc”可以进入命令模式,在任意位置点击鼠标即可进入编辑模式,转换关系如下图所示。
在这里插入图片描述三种模式互换关系如下:

在这里插入图片描述

第1节 基本技巧

了解 GVIM 的模式后来学习使用 GVIM 的基本技巧。这里不会详细介绍 GVIM 的所有命令,只会分享日常中的常见命令,这些命令足以覆盖所需的大部分场合。与此同时,这些小技巧也提高了工作的效率。为便于后续学习,也为了提高自身能力,建议同学们尽可能掌握这些技巧。

当然对初学者来说,在还不会设计代码的前提下熟练使用快捷方式的确有些困难。但是在学习之初,希望初学者可以花费一些时间,将这些小技巧逐一进行尝试并进行操作练习。“磨刀不误砍柴工”,不要小看用在快捷命令的练习时间,如果各位工程师真正掌握了这些命令的使用方法,一定可以在工作中受益无穷。

1.1 补全命令

补全命令(Ctrl+p):在进行代码编写的过程中可能会出现同一工程内需要重复输入很多代码的情况,此时可以使用补全命令。

即输入代码第一个字母后按下“Ctrl+p”,随后会出现前面已经输入过的具有相同首字母的所有代码,此时可以选择需要的对应代码。这里需要注意,只有本文档中已经完整编写过的代码才可以在相同首字母下拉菜单中看到,没有出现过代码的无法调用。
举个例子,假设希望输入“else”,就可以在编辑状态下,输入“e”后按“Ctrl+p”,此时会出现下拉菜单。可以看到会出现已经编写过的所有以字母“e”为开头的代码,按上下键选择所需代码,点击回车后就可以得到最终代码。
在这里插入图片描述

1.2 跳转命令

文件内跳转(gg, G, :100):跳转命令一共有三个快捷方式,“gg”、“G”、“:100”。

当一个工程比较复杂的时候,代码可能达到了上千行,此时手动翻页寻找代码的方式效率很低,而跳转命令可以快速跳转到指定位置,从而节省时间,提高效率。先来看“gg”,命令模式下在文档任意位置按下“gg”即可跳转到文档的最顶端开头部分。需要注意的是此命令的使用环境是命令模式,前面有讲过在其他两种模式下可以按下“Esc”进入命令模式,在命令模式下输入两个小写“g”,即可成功跳转到顶端。跳转后结果如下图所示。

在这里插入图片描述接下来是“G”,命令模式下在文档任意位置按下“G”即可跳转到文档的底端部分。注意此命令的使用环境依旧是命令模式,在其他两种模式下需要按“Esc”进入命令模式,在命令模式下输入一个大写“G”即可成功跳转到底端,跳转后结果如下图所示。

在这里插入图片描述
顶端底端都有了,如何跳转到指定页呢?这里就需要“:”了。在命令模式下输入“:”,最下面命令栏就会显示出来,接着输入想要跳转的行数,点击回车就会跳转到对应行。例如想要跳转到 100行,命令状态下在任意位置按“:”后输入 100,如图 2.1- 13 所示,点击回车就会跳转到第 100 行。跳转后结果如图 2.1- 14所示。
在这里插入图片描述
在这里插入图片描述

1.3 搜索命令

搜索命令(*,/, n, N):搜索命令中需要用到“*”、“/”、“n”、“N”等快捷键。
一个工程中想要知道都有哪些地方出现了某一代码,就可以使用“*”号键。命令状态下将光标移动到想要搜索的代码后按下“*”号键即“Shift+8”,随后此工程所有相同的代码都会高亮显示。

通过“n”和“N”可以实现这些高亮代码之间的选择切换。小写“n”可以切换到下一个高亮代码,大写“N”可以切换到上一个高亮代码。这样就可以在搜索出的高亮代码之间实现跳转,用搜索命令搜索出的“reg”代码如下图所示。
在这里插入图片描述

前文可知“*”号键可以对光标所在的代码进行亮显示,但有几千行代码的时候设计师一时无法寻找到需要的代码,此时就需要另外一种快捷方式,即“/”键。在命令状态下按“/+想要查找的代码”,此时该文当中此代码都会高亮显示。依旧以“reg”代码为例,在命令状态下输入“/reg”,如下图命令栏所示,按下回车即可高亮显示代码“reg”。

在这里插入图片描述

1.4 删除复制命令

删除命令(dd,d2d):删除命令需要用到“dd”快捷方式。

将光标放在想要删除的位置,命令模式下按“dd”即可删除该行。那如果需要一下子删除很多行要如何操作呢?这种情况下可以计算需要删除的行数后进行操作。比如想要删除 2 行则可以按下“d2d”或“2dd”,此时光标后两行内容将被删除。

复制命令(yy,y5y):复制命令需要用到“yy”快捷方式。

在这里,复制的快捷方式“Ctrl+c”依然可以使用,除此之外再向同学们分享另外一种复制方式。命令模式下,将光标放在想要复制的位置后按“yy”即可复制该行。如果想要复制多行,比如复制当前及向下的 5 行,将光标放在需要复制的第一行后按下“y5y”或“5yy”,这时光标后 5 行内容就复制成功了。如下图所示,可以看到命令栏显示“复制了 5 行”,此时复制的是 570-574 行。
在这里插入图片描述

粘贴命令(p):粘贴命令需要用到“p”快捷方式。


例如想要粘贴刚刚复制的 5 行,在命令模式下按“p”则可以看到粘贴成功,并且命令栏会显示“多了 5 行”,如下图所示,第 582-586为粘贴的内容。

在这里插入图片描述

第2节 高级技巧

除了上一节所述的基础技巧外,还有一些更加高级的技巧。掌握了这些技巧后则可以在更加大型的设计上能达到事半功倍的效果。

2.1 替换命令

替换命令(:%s/xx/yy/gc,:63,72s/xx/yy/gc):替换命令需要用到的是“:%s/xx/yy/gc”快捷方式。

在设计中有时可能会遇到把某段代码替换成另一段代码的情况,这个时候就要用到替换命令。在命令模式下,输入“:%s/xx/yy/gc”,点击回车后按下“y”即可对代码进行依次替换。其中“:%s”代表着作用于整个文档,“xx”代表着文档中需要替换的内容,“yy”表示替换后的内容,“gc”是快捷命令的指令不需要进行修改,随后按下的“y”表示“yes”,即确定进行修改。
举个例子,如果想要将整个文档中的“reg”替换为“wire”,则在命令模式下输入“:%s/reg/wire/gc”,如图 2.1- 22 所示;接着点击回车,就会看到如图 2.1- 20 所示的状态,文档中所有“reg”都高亮显示,唯有第一个 reg 显示更浅,命令栏提示是否换为“wire”。此时按下“y”则可以看到替换成功,如图 2.1- 21 所示,可以看到第 63 行的“reg”已经成功替换为“wire”,灰色光标进行到了下一个高亮代码。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
上面讲述的是整个文档中的某一代码需要替换,但有时候可能需要在某个范围进行替换。这种情况下将刚刚代表整个文档的符号“%”替换为范围即可。如果上例中想要替换第 63 到第 72 行的“reg”为“wire”,那么在命令模式下输入“:63,72s/reg/wire/gc”,如图 2.1- 25 所示;点击回车则可以看到 reg 都进行高亮显示;此时按下“y”即替换成功,如图 2.1- 23 所示。按照该方法依次替换可以发现,第 72 行以后就无法继续进行替换反而会显示“9 次替换,共 9 行”表示替换完成,如图 2.1- 26 所示,以上则为部分区域内替换代码的方法。
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

2.2 列删除方法

在日常编程中相信同学们都会使用删除的用法,即直接按“Delete”键删除想要的内容。但是有时候可能想要实现删除连续几行的某几个字符,这个时候就需要列删除的操作方法了。举个例子,假定想要删除下图中第 43 到第 49 行的第 3 到 5 个字符,通过观察可以发现下图想要删除的是“input”后的“put”。

在这里插入图片描述
首先在编辑模式下选择想要删除的区域,注意需要选到删除对应行和列。如下图所示,从第 43行第 3 个字符开始选择,到第 49 行第 5 个字符结束。
在这里插入图片描述接着按下“Ctrl+q”,可以看到想要删除的部分被选中了,如果这里没有选对则要返回到上一步重新选取范围。

在这里插入图片描述最后按下“Delete”键,结果如下图所示,可以看到 43 行到 49 行的三到五个字符都已经被删除,行删除操作完毕。

在这里插入图片描述可以发现这里其实是从编辑模式转换到列操作模式从而完成了删除操作,可见列操作模式十分便捷。但是与此同时也要注意,刚刚可以实现删除内容都为“put”是因为至简设计法代码书写的比较规范整齐。如果代码写的乱七八糟,列删除后很难不影响文档后续编辑效果。养成良好习惯,后续会受益无穷。

2.3 列插入办法

刚刚学会了列删除的操作,但有时候也会需要列插入的操作。下面来通过例子学习一下列插入,即在列的前面插入相同的内容。假定需要在第 51-60 行前面插入“output”,如下图所示。
在这里插入图片描述首先在 51 行按下“Ctrl+q”进入列操作模式,使用“h”、“j”、“k”、“l”四个按键”来控制上下左右,选择范围需要插入内容的范围,如下图所示。

在这里插入图片描述选定好范围后按下大写的“I”,接着输入需要插入的数据“output”,然后按“Esc”退出。此时可以看到选中的每一列都加上了同样内容,如下图所示。

在这里插入图片描述当然此方法不是必须使用键盘进行区域的选择,也可以使用鼠标选择范围后再按下“ctrl+q”,学会插入的方法后同学们可以按照个人习惯使用相应的区域选择方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值