gvim快捷键声明wire和reg

发布时间:2026/10/22 17:19:01

gvim快捷键声明wire和reg 摘要在verilog的编写中可能存在很多的wire和reg需要去声明。gvim中的verilog-mode插件对于写的组合或者时序逻辑这部分的支持貌似并不好。可以使用gvim的快捷键做辅助对这部分进行快捷声明。步骤1在.vimrc中复制如下代码并source Verilog declare: append aligned jump Assumption: one signal per line(wire/reg/input/output xxx;) Keys: leaderdw : declare wire under /*AUTOWIRE*/ leaderdr : declare reg under/*AUTOREG*/ leaderdi : declare input under /*autoinput*/ leaderdo: declare output under/*autooutput*/if!exists(g:verilog_decl_name_col)let g:verilog_decl_name_col 13 Signal name start column (1-based) endif if !exists(g:verilog_decl_indent) let g:verilog_decl_indent indent string: or\tendiffunction!s:FindMarker(marker)abortreturnsearch(\c\/\*\s*.a:marker.\s*\*\/,nw)endfunctionfunction!s:AlreadyDeclared(name)abort 全局上下搜索支持 wire/reg/input/output let pat ^\s*\%(wire\|reg\|input\|output\)\\s*\%(\[[^]]\\]\s*\)\?\ . escape(a:name, \) . \\s*; return search(pat, n) 0 || search(pat, bn) 0 endfunction function! s:PadToNameCol(keyword) abort let name_col get(g:, verilog_decl_name_col, 13) let prefix g:verilog_decl_indent . a:keyword . let spaces name_col - strlen(prefix) return repeat( , spaces 1 ? 1 : spaces) endfunction function! s:IsOnePerLineDecl(kind, line) abort return a:line ~# ^\s* . a:kind . \\s*\%(\[[^]]\\]\s*\)\?\h\w*\s*;\s*$ endfunction function! s:FindInsertAfterDeclBlock(anchor, kind) abort let lnum a:anchor 1 let last a:anchor while lnum line($) let txt getline(lnum) if SIDIsOnePerLineDecl(a:kind, txt) let last lnum let lnum 1 continue endif break endwhile return last endfunction function! s:Declare(marker, kind) abort let name expand(cword) if empty(name) echoerr No identifier under cursor return endif if SIDAlreadyDeclared(name) echom Already declared: . name return endif let anchor SIDFindMarker(a:marker) if anchor 0 echoerr Marker not found:/* . a:marker . */(case-insensitive) return endif let prefix g:verilog_decl_indent . a:kind let newline prefix . SIDPadToNameCol(a:kind) . name . ; let insert_after SIDFindInsertAfterDeclBlock(anchor, a:kind) call append(insert_after, newline) 光标跳到新行定位到信号名 let target_lnum insert_after1 call cursor(target_lnum,1)let name_start strlen(prefix.SIDPadToNameCol(a:kind))1 call cursor(target_lnum,name_start)endfunction nnoremap leaderdw :call SIDDeclare(autowire,wire)CR nnoremap leaderdr :call SIDDeclare(autoreg,reg)CR nnoremap leaderdi :call SIDDeclare(autoinput,input)CR nnoremap leaderdo:call SIDDeclare(autooutput,output)CR 可选一键插入标记映射 nnoremap leadermw :call append(line(.)1,/*AUTOWIRE*/)CR nnoremap leadermr :call append(line(.)1,/*AUTOREG*/)CR nnoremap leadermi:call append(line(.)1,/*autoinput*/)CR nnoremap leadermo :call append(line(.)1,/*autooutput*/)CR需要在verilog的.v文件中存在/*autowire*/和/*autoreg*/。module top ( input clk, input rst_n, input a, input b ); /*autowire*/ /*autoreg*/ always (*) begin comb_sum a ^ b; end always (posedge clk or negedge rst_n) begin if (!rst_n) q 1b0; else q comb_sum; end endmodule在要声明的wire信号光标出按下\dw,在要声明的reg信号光标处按下\dr。/*autowire*/ wire comb_sum; /*autoreg*/ reg q;效果如上。缺点在产生的声明中不会有位宽的识别每次产生声明后光标会自动跳转到声明行可以手动补齐位宽。
延伸阅读

更多相关文章

2026/10/22 17:14:00

MySQL:每个查询的定义与用法

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/22 19:30:06

AI技术日报与工程化落地:从轻量级多模态到智能体可观测性

今天这份日报写晚了,倒不是拖延,而是 2026 年 10 月 7 日这个时间点确实特殊——国内大部分人还在国庆假期的返程路上,海外的技术社区却一点没闲着。我把各类信息源扫了一遍,整体感受很强烈:讨论“大模型还能做什么”的…

2026/10/22 19:30:06

智能荧光工具如何实现细胞吞噬过程自动识别与追踪

研究细菌吞噬过程,最让人头疼的不是做实验,而是看数据。吞噬细胞吞没荧光标记的细菌,听起来简单,真正做起来却要面对一连串问题:细菌太小,Movement太快,荧光信号在酸性吞噬体里会猝灭&#xff0…

2026/10/22 19:30:06

复刻现实:高斯泼溅三维重建的完整技术解析与实战

1. 项目概述:当我们说“复刻现实”时,到底在复刻什么这几年三维重建圈子最热闹的话题,绕不开“高斯泼溅”这四个字。我第一次看到这种渲染出来的画面时,第一反应是“这不就是照片吗”——然后鼠标一转,视角丝滑地滑过建…

2026/10/22 19:30:06

顽固AI率怎么降?从文本检测原理到五种实战重写方法

1. 顽固AI率到底在查什么1.1 检测平台眼里的“AI痕迹”是什么2026年聊降AI率这个话题,和一两年前完全不是一回事。早先大家讨论的“AI率高”,大多是几个句子被标红,用同义词替换就能救回来。今年我遇到的情况是:整篇文档读起来通顺…

2026/10/22 19:25:05

Vim快捷键映射完全指南:从map基础到leader与函数封装

干过一段时间服务端开发或者常年在终端里摸爬滚打的人,几乎都绕不开 Vim。编辑器上手之后,大家很快会发现一件事:默认按键方案虽然能跑,但在高频操作上真的不够痛快。这时候,自己配置快捷键映射就成了一件迟早要做的正…

2026/10/22 11:29:28

金融AI落地指南:从调研报告到技术选型与工程实践

简介:这份PDF报告聚焦2025年金融服务业中国AI现状与趋势,面向金融科技从业者、AI战略规划人员及关注行业数字化转型的研究者,帮助读者把握生成式AI在银行、支付、交易等场景中的落地路径与投资方向。资源包内含1个PDF文件,大小约1…

2026/10/22 0:01:49

电商智能运营体系从0到1:架构设计、落地步骤与避坑指南

前两年我们团队接了一个电商平台的运营中台项目,目标很直白:把过去靠运营拍脑袋做的选品、定价、发券、推活动这些事,逐步用数据算法和自动化流程代替。项目名字内部就叫“电商智能运营体系”。最近有不少朋友问我当时是怎么设计的、踩过哪些…

2026/10/22 0:01:49

若依框架AI代码生成不稳定?用Agent Skill三层结构+五步法搞定

最近一段时间,我一直想把后台管理系统里那些机械重复的增删改查代码交给AI去写。框架用的是若依,按理说这类业务代码模式非常固定,应该是AI最擅长的事情。可真试下来却不是那么回事——你让AI生成一个用户管理模块,它给出的Contro…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑