Gvim再认识

2 篇文章 0 订阅

        做为一名FPGA或者数字芯片设计人员,掌握vim是十分必要的,vim是编写代码的神器,使用vim来编写RTL代码会极大提高我们的效率,通过一些模板和规则的制作,vim也会让我们的代码看起来更加完美漂亮,尤其是对齐方面。         

        我接触vim也有段时间了,对vim也比较熟悉,这里我要推荐一本关于vim的书籍----《vim的实用技巧》。看完这本书,我对vim有了新的认识,也学了很多,以前总是想着制作快捷键和模板,却对vim自带的一些强大功能一无所知,真是惭愧。多掌握vim自带的一些,这样就可以随便在哪都可以用的顺手。下面我将会介绍一些vim自带的核心功能。

1、点范式

     .命令可以让我们重复上次的修改,它是Vim中最为强大的多面手。那么何为修改?从进入插入模式的那一刻起(例如,输入i),直到返回普通模式时为止(输入<ESC>),这期间做出的改变称为一次修改。vim会记录其每一个动作,做出这样一个修改后再用.命令的话,它就会重新执行这些按键操作。

      核心思想就是:执行、重复、回退;一键移动,另一键执行

2、把撤销单元切成块。i{insert some text}<Esc>是一次修改,u键会触发撤销命令。

3、双剑合璧,天下无敌。  操作符 + 动作命令 = 操作。  如:d{motion}。

    操作符如下:

命令用途
c修改
d删除
y复制
g~反转大小写
gu转化为小写
gU转化为大写
>增加缩进
<减小缩进
=自动缩进

动作命令如下:

aw:一个单词

ap:一段

l:一个字符

4、重新映射大小写转换键

5、区分实际行和屏幕行

jk命令会工具实际行移动,gj,gk则按照屏幕行移动。

6、单词和字符串;w单词,W字符串。单词由字母、数字、下划线组成,字符串则有非空白字符序列组成。

7、分隔符文本对象

  • a)      一对圆括号                        i)      圆括号内部
  • a}      一对花括号                        i}      花括号内部
  • a]
  • a'
  • a"
  • a`
  • at    一对xml标签<xml>tags</xml>

8、范围文本对象

  • iw         当前单词
  • aw        当前单词及  空格
  • iW        当前字符串
  • aW       当前字符串及 空格
  • is          当前一个句子
  • as         当前一个句子及 空格
  • ip          当前段落
  • ap         当前段落及 空格

9、位置标记

m{a-zA-Z}标记当前位置,'{mark}跳到位置标记处

10、再匹配括号间跳转   %

11、寄存器

  • 无名寄存器(""):x,s,d{motion},c{motion},y{motion}命令都会覆盖无名寄存器中的内容。
  • 复制专用寄存器("0):当使用y{motion}是,要复制的文本会同时拷贝到无名寄存器和复制专用寄存器中。
  • 有名寄存器("a-"z)
  • 系统剪贴板("+),选择专用寄存器("*):如果想从vim复制文本到外部程序(反之亦然),则必须使用系统剪贴板。
  • 在可视模式下使用p命令时,会先从无名寄存器中取出内容,然后在把高亮的内容存到无名寄存器中。
  • p命令粘贴到光标后,P命令则是粘贴到光标前。

12、利用宏来制作模板

  • q键既是“录制”按钮,也是“停止”按钮。为了录制我们的按键操作,一开始需要按q{register},从而指定一个用于保存宏的寄存器。当状态栏中出现“记录中”时,表示录制已经开始。此后,我们执行的每一条命令都被宏捕获,直到再次按下q键停止为止。
  • 将宏粘贴到文档中,(:put a)
  • 编辑完宏后,0"ay$dd
  • 将我们录制好的宏粘贴到_vimrc中即可。

13、自定义模板命令说明

  • <F2>        插入文件头
  • Module     module模板
  • Define      define模板
  • Code        code注释模板,用来分隔变量和代码,使整个代码布局更加合理
  • ii               <Esc>
  • qq             列块模式
  • pp             补全命令
  • hh             插入模式下左移
  • jj                插入模式下下移
  • kk              插入模式下上移
  • ll               插入模式下右移
  • input         input对齐模板
  • output8       output对齐模板,最后的数字取值范围是[0,32],默认为wire型的。
  • outputreg8    output对齐模板,最后的数字取值范围是[0,32]。
  • reg8          reg模板,最后的数字取值范围是[0,32]。
  • wire8         wire模板,最后的数字取值范围是[0,32]。
  • Shixu        时序逻辑代码模板,默认带2个else if
  • Shixu1      时序逻辑代码模板,带一个else if
  • Zh             组合逻辑代码模板
  • Jsq           计数器代码模板
  • Jsq2         2层计数器模板
  • Jsq3         3层计数器模板
  • Ztj             3段式状态机模板
  • <F10>        例化
  • <F7>        调整例化后的格式
  • =ap           在普通模式下输入=ap,可以调整该段代码的自动缩进
  • 以上这些命令自己到.v文件里一个一个的试试,试过就能感受到vim的强大了。

 

 

福利:想要这个gvim的童鞋,可以关注一下我博客,然后再评论区留下邮箱,看到后我会发给你们的哦!!!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值