我可以在Vim中搜索并替换为数学表达式吗?

时间:2019-01-12 20:08:55

标签: vim

我有以下一行:

set_property LOC DSP48E2_X0Y0 [get_cells{name[0].dut/mm1/dsp_chain[0].dsp_inst}];

我想将DSP48E2_X0Y{number}替换为DSP48E2_X0Y{number+5} 我在堆栈溢出时跟踪了一个线程,并尝试使用awk命令:

echo "set_property LOC DSP48E2_X0Y0   [get_cells {name[0].dut/mm1/dsp_chain[0].dsp_inst}];" | awk `{ printf "%s %s %s_X%dY%d", $1, $2, $3, $4, $5+5}`

但我遇到错误:

bad math expression: operand expected at `,'

1 个答案:

答案 0 :(得分:3)

要回答标题中的问题:是的,只需使用\=开始替换。

就您而言,

:s/DSP48E2_X0Y\zs\d\+/\=submatch(0)+5/

会这样做。

(不知道所有awk的内容是什么。)