Vim:将字符序列识别为“整个单词”的一部分

时间:2016-05-16 20:44:01

标签: vim

这一直困扰着我一段时间:我正在编写使用verilog-auto的代码,这意味着我正在编辑一个veril文件中,并在注释部分注入perl片段。我喜欢在Vim中做的一件非常有用的事情是使用*#在光标下搜索整个单词。但是,如果perl语法包含${w}$w等变量名称,则这些快捷方式不起作用。

我不想将${}添加到我的“关键字”列表中,因为有很多情况我不希望这些作为一句话。例如,在verilog连接中{sig1,sig2[1:0]},我不希望将{sig1作为整个单词进行搜索。

有没有办法让“全字”通过正则表达式识别序列?因此,只有${[a-z]+}$[a-z]+才会被识别为“关键字”。

可以让我在光标下搜索模式的那个或单独的键盘快捷键。

1 个答案:

答案 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寄存器,但如果您愿意,可以选择不同的寄存器。