这一直困扰着我一段时间:我正在编写使用verilog-auto的代码,这意味着我正在编辑一个veril文件中,并在注释部分注入perl片段。我喜欢在Vim中做的一件非常有用的事情是使用*
和#
在光标下搜索整个单词。但是,如果perl语法包含${w}
和$w
等变量名称,则这些快捷方式不起作用。
我不想将$
,{
和}
添加到我的“关键字”列表中,因为有很多情况我不希望这些作为一句话。例如,在verilog连接中{sig1,sig2[1:0]}
,我不希望将{sig1
作为整个单词进行搜索。
有没有办法让“全字”通过正则表达式识别序列?因此,只有${[a-z]+}
或$[a-z]+
才会被识别为“关键字”。
可以让我在光标下搜索模式的那个或单独的键盘快捷键。
答案 0 :(得分:1)
这是一个非常丑陋的黑客,但它有效:
nnoremap * viW:s/\%V\$*{*\a*}*/\=setreg('a', submatch(0))/n<cr>/<C-r>a<cr>n
nnoremap # viW:s/\%V\$*{*\a*}*/\=setreg('a', submatch(0))/n<cr>/<C-r>a<cr>N
唯一的缺点是这会覆盖你最后的视觉选择,所以如果你经常使用gv
,这不是最好的解决方案。它还会覆盖a
寄存器,但如果您愿意,可以选择不同的寄存器。