EasyAlign操作总结
你提到的 EasyAlign 是 Vim/Neovim 生态里的对齐插件,下面按从安装到实战的顺序整理一份用法总结。
📦 安装与基础配置
使用 vim-plug 安装:Plug 'junegunn/vim-easy-align'。
推荐将交互式对齐映射到 ga 键:
" Visual 模式
xmap ga <Plug>(EasyAlign)
" Normal 模式
nmap ga <Plug>(EasyAlign)
🎮 两种使用模式
命令模式(非交互式)
直接输入命令,适合脚本化或精确控制:
:EasyAlign = " 按第1个 = 对齐
:EasyAlign * = " 按所有 = 对齐
:EasyAlign /[:;]+/ " 按正则表达式对齐
:EasyAlign \ " \ 表示空格
交互模式(推荐)
- Visual 模式:
V选中多行,按ga - Normal 模式:
ga+ 动作/文本对象(如gaip对齐当前段落) - 然后按 N(第几个匹配)→ 对齐方向(可选)→ 分隔符
流程:ga → * → = 即可按所有等号对齐。
🔤 预定义对齐规则
EasyAlign 内置了常用分隔符的“对齐规则”:
| 分隔符 | 用法 | 说明 |
|---|---|---|
= |
ga = |
按第1个等号对齐 |
2= |
ga 2= |
按第2个等号对齐 |
*= |
ga *= |
按所有等号对齐 |
**= |
ga **= |
左右交替对齐所有等号 |
: |
ga : |
冒号对齐(JSON/YAML) |
| |
ga | |
竖线对齐(Markdown 表格) |
<Space> |
ga <Space> |
按空格对齐 |
, |
ga , |
逗号对齐(紧贴左侧) |
N 的描述符:数字表示第 N 个,* 表示所有,- 表示最后一个,-2 表示倒数第二个。
🧩 正则表达式对齐
复杂场景可用正则表达式:
- 交互模式:按
Ctrl-X进入正则输入模式,输入正则后回车 - 命令模式:
:EasyAlign /REGEX/
芯片验证中常用的正则示例:
:EasyAlign /[=?:]\|!==/ " 对齐 =、?、: 或 !==
:EasyAlign * /\s*=\s*/ " 对齐赋值等号及其周围空格
⚙️ 对齐选项
命令模式可在分隔符后追加选项:
| 选项 | 含义 | 示例 |
|---|---|---|
lN |
左侧留 N 个空格 | l4 |
rN |
右侧留 N 个空格 | r1 |
a[lrc] |
对齐方式(左/右/中) | ar 右对齐 |
d[lrc] |
分隔符本身的对齐 | dr 分隔符右对齐 |
示例::EasyAlign = dr 让等号右对齐。
交互模式中,用 Ctrl-L 设左边距、Ctrl-R 设右边距、↓ 清除边距。
💡 芯片验证场景实用示例
1. 对齐端口声明
gaip=
" 输入: output logic [7:0] data;
" input logic clk;
" 输出: output logic [7:0] data;
" input logic clk;
2. 对齐信号赋值
gaip*=
" 将所有 = 对齐,让赋值语句整齐排列
3. 对齐注释
EasyAlign 默认忽略注释和字符串中的分隔符。若要强制对齐注释,需在自定义规则中修改 ignore_groups 参数。
4. 对齐 UVM 宏调用
gaip(
" 对齐 `uvm_info 等宏中的括号和参数
🔧 进阶:自定义对齐规则
在 .vimrc 中可定义专用分隔符:
let g:easy_align_delimiters = {
\ '>': { 'pattern': '>>\|=>\|>' },
\ '/': { 'pattern': '//\+\|/\*\|\*/', 'delimiter_align': 'l', 'ignore_groups': ['!Comment'] },
\ ')': { 'pattern': '[()]', 'left_margin': 0, 'right_margin': 0, 'stick_to_left': 0 },
\ }
常用配置项:pattern(匹配模式)、left_margin/right_margin(边距)、delimiter_align(分隔符对齐方向)、ignore_groups(忽略的语法组)、stick_to_left(是否紧贴左侧)。
⌨️ 速查表
| 操作 | 按键/命令 |
|---|---|
| 启动对齐 | ga + 动作,或 Visual 模式下 ga |
对齐所有第1个 = |
ga = 或 gaip= |
对齐所有 = |
ga *= |
对齐所有第1个 : |
ga : |
| 正则对齐 | ga → Ctrl-X → 输入正则 |
| 切换对齐方向 | 交互模式中按 Enter |
| 设置左边距 | 交互模式中 Ctrl-L + 数字 |
| 命令模式对齐 | :EasyAlign = |
| 对齐整个文件 | :%EasyAlign = |
EasyAlign 的核心优势是语法感知(默认忽略字符串和注释中的分隔符)和交互式操作(实时预览对齐效果),配合 ga 快捷键可以做到“选中即对齐”,在写 SV 端口声明、信号列表、宏调用时效率很高。
浙公网安备 33010602011771号