【发布时间】:2019-11-19 14:56:13
【问题描述】:
我正在尝试实现宏以将 Verilog 总线扩展为 Vim - Macro to expand verilog bus,这对于一个变量来说确实很有效。
但我遇到了问题,因为我想实现如下所示的多个总线
来源:
{test[13:10],thisistest[3:0],BUS[2:1]}
结果:
test[13]
test[12]
test[11]
test[10]
thisistest[3]
thisistest[2]
thisistest[1]
thisistest[0]
BUS[2]
BUS[1]
我试图做的事情: 我做了类似的功能
fun! split()
let line = getline('.')
let result = []
let list = split(line, ",")
let length = len(list)
for i in length
call ExpandIt(list[length])
endfor
endf
fun! ExpandIt()
let pat = '^\(.*\)\[\(\d\+\):\(\d\+\)\]\s*$'
let line = getline('.')
let lnr = line('.')
if line !~ pat
return
endif
let exestr = substitute(line,pat,'range(\2,\3,-1)','g')
let text = substitute(line,pat,'\1','g')
exec 'let range='.exestr
let result = []
for i in range
call add(result, text.'['.i.']')
endfor
call append(lnr, result)
exec lnr'.d'
endf
nnoremap <F6> :call split()<cr>
您能告诉我我应该怎么做才能走正确的路吗?
【问题讨论】: